我正在尝试使用 Pandas 将多个 Excel 工作表解析为单独的数据帧。
到目前为止我的代码是:
sheet_names =[tab1, tab2]
df_names = [1,2]
def initilize_dataframes(sheet_names):
for name in sheet_names:
df = xls_file.parse(name) #parse the xlxs sheet
df = df.transpose() #transpose dates to index
new_header = df.iloc[0] #column header names
df = df[1:] #drop 1st row
df.rename(columns=new_header, inplace= True) #rename the columns
return df`
`
for i in df_names:
df_(i) = initilize_dataframes(sheet_names)#something like this idk
最后两行我无法理解。我知道该函数将返回 df,但我希望它从 df_names 列表中获取值。并相应地标记 DataFrame。
例如,excel表格中的tab1,DataFrame应该命名为df_1,分别循环tab2和df_2。
最佳答案
globals
是可能的:
for i, val in enumerate(df_names):
globals()['df_' + str(vals)] = initilize_dataframes(sheet_names[i])
但更好的是使用 DataFrames
的 dict
,sheet_names
从 enumerate
中按位置选择,但需要减去 1
,因为python从0
开始计数:
dfs = {}
for i, val in enumerate(df_names):
dfs[val] = initilize_dataframes(sheet_names[i])
print (dfs[1])
关于python - 使用 Pandas 从函数返回多个 DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45319422/