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)
我有一个数据框面板,由 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)