我有两个大致类似的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中的类别来填充列。有谁知道从哪里开始?
你只是在寻找一个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
只需:第一个数据帧上的df1.groupby(['ID', 'Category']).transform(func='mean')
即可获得所需的数据帧。