问题
Click here to see image
#### the data is inverted #######
#### To bring back to its original position #######
df_1= df_i.iloc[::-1]
#### Set index again ###################
df_1.index = range(len(df_1.index))
enter image description here
#In for I am creating a data frame df , But I want the data frame name as df_0, df_1, df_2 .......................... df_n
On every iteration I want create a new data frame, How?
And my count = 22, That means my loop will run for 22 times.
Is there a way that I concat horizontally all the data frames as a single dta frame
14, 15, 16 (from first sheet), 14A, 15A, 16A (from second Sheet), 14B,15B, 16B,(From Third sheet) as col1, col2, col3,col4.......................
Appreciate your help
回答1:
You should make up your question so that other people will get max advantage from this site.
I will try to propose solution to this question.
On every iteration I want create a new data frame, How?
The idea is to store the dataframes as values of a dictionary.
cnt = 22 # your loop
dict_of_df = {} # initialize empty dictionary
for i in range(0,22):
newname = df_sheetnames['col'].values[i]
dict_of_df["df_{}".format(i)] = pd.read_excel('DATA.xlsx', sheetname=newname, skiprows=6, usecols=[14,15,16])
You can access the dataframes by call dict_of_df[key]
, where key = "df_1", "df_2", ... , "df_22"
Now you have many dataframes and you want to concat, use pandas.concat()
If you want to rename the columns after that,
simply write complete_df.columns = ['col1', 'col2', 'col3', ...]
来源:https://stackoverflow.com/questions/52502779/how-to-create-a-new-dataframe-with-every-iteration-of-for-loop-in-python