1
我有一個帶有數據框的面板,索引爲code
。例如panel["ABC"]
爲我提供了「ABC」的數據幀,它基本上是一個NxM數據矩陣。Python - 爲Pandas面板的每個數據框添加一列
現在,我也有一本字典dict
,將每個code
映射到一個數字。我想爲每個數據框添加一個新列,其中包含相應的數字(每行重複一次)。
什麼是最好的方式來實現這與熊貓?
我有一個帶有數據框的面板,索引爲code
。例如panel["ABC"]
爲我提供了「ABC」的數據幀,它基本上是一個NxM數據矩陣。Python - 爲Pandas面板的每個數據框添加一列
現在,我也有一本字典dict
,將每個code
映射到一個數字。我想爲每個數據框添加一個新列,其中包含相應的數字(每行重複一次)。
什麼是最好的方式來實現這與熊貓?
也許有一個更好的辦法,但我會做到以下幾點:
import pandas as pd
import numpy as np
data = {'Item1' : pd.DataFrame(np.random.randn(4, 3)), 'Item2' : pd.DataFrame(np.random.randn(4, 3))}
p = pd.Panel(data)
d = {'Item1':1, 'Item2':2}
for key, values in d.iteritems():
p[key]['newcol'] = values
print p[key]
這將返回類似:
0 1 2 newcol
0 1.348574 -1.141693 0.630736 2
1 -0.569502 -2.754901 -0.541633 2
2 -0.365106 0.087317 0.292110 2
3 -0.481947 0.719049 -0.216578 2
0 1 2 newcol
0 1.622063 1.365436 1.701292 1
1 -0.050607 -2.451337 -1.053154 1
2 0.414793 0.295848 -0.206926 1
3 1.669253 -1.648159 -0.903917 1
編輯:你可以建立與更新的數據框用新的面板:
newd = {}
for key, values in d.iteritems():
p[key]['newcol'] = values
# Add new keys and dataframe to a new dictionary
newd[key] = p[key]
,然後建立一個新的面板:
p2 = pd.Panel(newd)
嗨法比奧,謝謝你的回覆。我已經嘗試了你的建議,但問題是新的列在for循環完成後「消失」。 如何讓這些新的柱子留在那裏? – Abramodj
@Abramodj您是否必須將它們再次存儲在面板上? –
是的,我願意。順便說一句,我發現只有當我使用iloc訪問面板時它才「消失」。使用按鍵,按預期工作。爲什麼?! – Abramodj