使用Pandas join来填充列

问题描述 投票:-1回答:2

我有两个大致类似的DataFrame

(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中的类别来填充列。有谁知道从哪里开始?

python pandas
2个回答
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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.