Pandas 通过取列之间的平均值来合并两个数据框
Posted
技术标签:
【中文标题】Pandas 通过取列之间的平均值来合并两个数据框【英文标题】:Pandas merge two dataframes by taking the mean between the columns 【发布时间】:2018-01-17 05:22:03 【问题描述】:我正在使用 Pandas DataFrames 并希望在其中两个之间取平均值。我正在寻找具有相同名称的列之间的平均值。 例如
df1
time x y z
0 1 1.25 2.5 0.75
1 2 2.75 2.5 3.00
2 3 1.50 2.5 1.25
3 4 3.00 2.5 3.50
4 5 0.50 2.5 2.25
df2
time x y z
0 2 0.75 2.5 1.75
1 3 3.00 2.5 3.00
2 4 1.25 2.5 0.25
3 5 3.50 2.5 2.00
4 6 2.25 2.5 2.25
我正在寻找的结果是
df3
time x y z
0 1 1.25 2.5 0.75
1 2 1.75 2.5 2.375
2 3 2.25 2.5 2.125
3 4 2.125 2.5 1.875
4 5 2.00 2.5 2.125
5 6 2.25 2.5 2.25
在 Pandas 中是否有一种简单的方法可以做到这一点,使用合并功能或类似功能? 我正在寻找一种无需指定列名的方法。
【问题讨论】:
【参考方案1】:我认为你需要concat
+ groupby
和聚合mean
:
df = pd.concat([df1, df2]).groupby('time', as_index=False).mean()
print (df)
time x y z
0 1 1.250 2.5 0.750
1 2 1.750 2.5 2.375
2 3 2.250 2.5 2.125
3 4 2.125 2.5 1.875
4 5 2.000 2.5 2.125
5 6 2.250 2.5 2.250
【讨论】:
会 pd.merge(df1, df2, left_index=True, right_index=True, how='outer').mean(axis=1) 做同样的事情,还是我在这里弄错了?跨度> @Uvar - 不幸的是没有,因为在merge
之后得到列 - ['time_x', 'x_x', 'y_x', 'z_x', 'time_y', 'x_y', 'y_y', 'z_y']
谢谢!我试过这个,但忘记了 df1, df2 @jezrael 周围的方括号 []
@Uvar 您的操作会导致仅剩一列。 0 1.56250 1 2.71875 2 2.03125 3 3.25000 4 2.90625
那我确实错了。感谢您的额外见解! :)以上是关于Pandas 通过取列之间的平均值来合并两个数据框的主要内容,如果未能解决你的问题,请参考以下文章