从pandas中的多级groupby中选择

时间:2014-08-29 19:43:15

标签: python pandas

假设我有两个数据框:df包含列('a', 'b', 'c'),tf包含列('a', 'b')。我在df中的两个常见列上进行了组合:

grouped_sum = df.groupby(('a', 'b')).sum()

我如何"添加"根据{{​​1}}列ctf,即

grouped_sum

对于第二个数据框的所有行tf[i]['c'] = grouped_sum[tf[i]['a'], tf[i]['b']] ?对于具有单个级别的groupby,它只需通过使用相应的tf。列索引该组即可。

1 个答案:

答案 0 :(得分:2)

如果你使用as_index = False进行分组,则可以与tf合并:

In [11]: tf = pd.DataFrame([[1, 2], [3, 4]], columns=list('ab'))

In [12]: df = pd.DataFrame([[1, 2, 3], [1, 2, 4], [3, 4, 5]], columns=list('abc'))

In [13]: grouped_sum = df.groupby(['a', 'b'], as_index=False).sum()

In [14]: grouped_sum
Out[14]:
   a  b  c
0  1  2  7
1  3  4  5

In [15]: tf.merge(grouped_sum)  # this won't always be the same as grouped_sum!
Out[15]:
   a  b  c
0  1  2  7
1  3  4  5

另一种选择是将a和b设置为tf的索引