Python—向面板的每个数据帧添加一列
我有一个包含大量数据帧的面板,由Python—向面板的每个数据帧添加一列,python,pandas,data-analysis,Python,Pandas,Data Analysis,我有一个包含大量数据帧的面板,由code索引。例如,panel[“ABC”]为我提供了“ABC”的数据帧,它基本上是一个NxM数据矩阵 现在,我还有一个dictionarydict,将每个code映射到一个数字。我想向我的每个数据帧添加一个新列,包含相应的数字(每行重复) 用熊猫实现这一目标的最佳方法是什么?也许有更好的方法,但我会做以下几点: import pandas as pd import numpy as np data = {'Item1' : pd.DataFrame(np.ra
code
索引。例如,panel[“ABC”]
为我提供了“ABC”的数据帧,它基本上是一个NxM数据矩阵
现在,我还有一个dictionarydict
,将每个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你必须把它们再次存储在面板上吗?是的,我需要。顺便说一句,我发现只有当我使用iloc访问面板时,它才会“消失”。使用按键,它才能正常工作。为什么?