Python - 向 Pandas 面板的每个数据框添加一列

Python - Add a column to each dataframe of a Pandas Panel

我有一个数据框面板,由 code 索引。例如 panel["ABC"] 给了我 "ABC" 的数据帧,它基本上是一个 NxM 数据矩阵。

现在,我还有一本字典 dict,将每个 code 映射到一个数字。我想为我的每个数据框添加一个新列,其中包含相应的数字(每行重复)。

使用 pandas 实现此目的的最佳方法是什么?

也许有更好的方法,但我会这样做:

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]

这 returns 类似于:

          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)