使用熊猫联接来填充列

时间:2019-03-01 17:46:04

标签: python pandas

我有两个大致类似的DataFrames

(ID) (Category) (Value1)  (Value2)

111   1          5          7
112   1          3          8
113   2          6          9
114   3          2          6

(Category)  (Value1 Average for Category) (Value2 Average for Category)

1              4                              5 
2              6                              7
3              9                              2

最终,我想将两个DataFrame合并在一起,以便每个ID可以在与之对应的行中获得其类别的平均值。我在寻找正确的方式加入/合并/等方面遇到困难。通过检查另一个DateFrame中的类别将填充列。有谁知道从哪里开始?

2 个答案:

答案 0 :(得分:0)

只需: df1.groupby(['ID', 'Category']).transform(func='mean') 在第一个数据帧上获取所需的数据帧。

答案 1 :(得分:0)

您只是在寻找join,在大熊猫中,我们使用pd.merge来实现以下目的:

df3 = pd.merge(df1, df2, on='Category')

    ID  Category    Value1  Value2  Value 1 Average Value 2 Average
0   111 1           5       7       4               5
1   112 1           3       8       4               5
2   113 2           6       9       6               7
3   114 3           2       6       9               2

pandas关于合并的正式文档:
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.merge.html

这是有关联接的一个很好的解释: Pandas Merging 101