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数据矩阵

现在,我还有一个dictionary
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你必须把它们再次存储在面板上吗?是的,我需要。顺便说一句,我发现只有当我使用iloc访问面板时,它才会“消失”。使用按键,它才能正常工作。为什么?