我有以下串列
list= ['df1', 'df2', 'df3']
此外,我有具有相同資料幀結構的資料幀 df1 df2 df3
現在我想使用串列來連接三個資料框而不是說
df= pd.concat([df1, df2, df3])
如果我嘗試
df= pd.concat(list)
我收到以下錯誤:
TypeError: cannot concatenate object of type '<class 'str'>'; only Series and DataFrame objs are valid
如果我嘗試
df = pd.concat([globals()[i]for i in list])
我明白了
KeyError: 'df1'
如何使用串列進行連接?
uj5u.com熱心網友回復:
只需檢查eval
l = ['df1', 'df2', 'df3']
out = pd.concat([eval(x) for x in l])
uj5u.com熱心網友回復:
您不應該使用globals()它...將 DataFrames 存盤在字典中:
dfs_dict = {
'df1': df1,
'df2': df2,
'df3': df3,
# others...
}
然后你可以定義一個給定df名稱/鍵串列的函式,回傳相應資料幀的串列
def get_dfs(df_names):
return [dfs_dict[name] for name in df_names]
最后,您可以將其與pd.concat
df_names = ['df1', 'df2', 'df3']
df = pd.concat(get_dfs(df_names))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/492146.html
下一篇:嵌套字典和嵌套串列
