我只是想添加存儲在字典數據幀。直覺上我想循環字典。但是,我沒有一個初始數據框與零值。優雅地完成這件事的最好方法是什麼?目前,我做了以下內容:Python的大熊貓DataFrames
dict = {'B' :df1, 'C':df2, 'D': df3}
total = dict['B'] + dict['C'] + dict['D']
的DFS是從csv文件閱讀和有可能超過3
我怎樣才能在一個循環中完成這個初始化?
我只是想添加存儲在字典數據幀。直覺上我想循環字典。但是,我沒有一個初始數據框與零值。優雅地完成這件事的最好方法是什麼?目前,我做了以下內容:Python的大熊貓DataFrames
dict = {'B' :df1, 'C':df2, 'D': df3}
total = dict['B'] + dict['C'] + dict['D']
的DFS是從csv文件閱讀和有可能超過3
我怎樣才能在一個循環中完成這個初始化?
您可以通過字典值concat
,例如:
In [195]:
d = {}
d['a'] = pd.DataFrame({'a':np.arange(5)})
d['b'] = pd.DataFrame({'b':np.arange(5)})
total = pd.concat(d.values(), axis=1)
total.sum()
Out[195]:
a 10
b 10
dtype: int64
假設你想添加(和another answer如不串聯)這些DataFrames你可以使用類似以下內容:
#!/usr/bin/env python3
# coding: utf-8
import pandas as pd
import numpy as np
df1 = pd.DataFrame(np.random.rand(3,2))
df2 = pd.DataFrame(np.random.rand(3,2))
df3 = pd.DataFrame(np.random.rand(3,2))
df4 = pd.DataFrame(np.random.rand(3,2))
d = {'a': df1, 'b': df2, 'c': df3, 'd': df4}
total = 0
for key, df in d.items():
total += df
您可以創建一個面板,然後求和:
pd.Panel(dict).sum()
在一個側面說明,它不是覆蓋內置dict
功能
最好的做法只是爲了完整性,這裏是演示問題和解決方案:
import pandas as pd
import numpy as np
df1 = pd.DataFrame(np.random.rand(3,2))
df2 = pd.DataFrame(np.random.rand(3,2))
df3 = pd.DataFrame(np.random.rand(3,2))
df4 = pd.DataFrame(np.random.rand(3,2))
d = {'a': df1, 'b': df2, 'c': df3, 'd': df4}
for key, df in d.items():
if 'total' in locals():
print("found")
total += df
else:
print("not")
total = df
print(total)
del total
以下是錯誤我得到:--- -------------------------------------------------- ---------------------- NameError Traceback(最近呼叫的最後一個) in () 11 for鍵,DF在d.items(): ---> 12總+ = DF NameError:name'total'未定義 –
@AlMerchant:你說得對。我忘了初始化變量total,並相應地編輯了我的答案。對不起。 – albert
我想這個問題歸結到我怎麼知道Python中的變量是否是未定義的? –