gpt4 book ai didi

python - 按同一列加入多个 Pandas 数据框并求和

转载 作者:太空宇宙 更新时间:2023-11-04 00:38:18 25 4
gpt4 key购买 nike

我有 100 个 Pandas 的 DataFrames。它们具有相同的结构,两列:xy。我目前正在尝试通过 x加入它们,并计算 y 列的平均值。不过,我面临的问题是生成的 DataFrame 只有两列 xy (而不是 100 y 列)。我发现我应该使用 concat,但它没有像我预期的那样工作,知道吗?

例如

import pandas as pd

# ...

result = pd.concat(dfs, axis=1, keys=["x"], join="inner")

print result


# x
# x y
# 0 0.120 687.46
# 1 0.122 691.03

最佳答案

pd.concat 沿指定轴连接数据帧。多级轴应使用参数keys

试试这个:

数据:

In [26]: dfs
Out[26]:
[ x y
0 1 11
1 2 12
2 3 13, x y
0 1 21
1 2 22
2 3 23]

In [27]: dfs[0]
Out[27]:
x y
0 1 11
1 2 12
2 3 13

In [28]: dfs[1]
Out[28]:
x y
0 1 21
1 2 22
2 3 23

解决方法:

In [29]: pd.concat(map(lambda x: x.set_index('x'), dfs), axis=1)
Out[29]:
y y
x
1 11 21
2 12 22
3 13 23

或使用列表理解:

In [34]: pd.concat([x.set_index('x') for x in dfs], axis=1)
Out[34]:
y y
x
1 11 21
2 12 22
3 13 23

计算每的平均值:

In [35]: pd.concat([x.set_index('x') for x in dfs], axis=1).mean()
Out[35]:
y 12.0
y 22.0
dtype: float64

平均每行:

In [36]: pd.concat([x.set_index('x') for x in dfs], axis=1).mean(1)
Out[36]:
x
1 16.0
2 17.0
3 18.0
dtype: float64

更新:

In [8]: pd.concat([x.set_index('x') for x in dfs], axis=1).mean(1).reset_index(name='y')
Out[8]:
x y
0 1 16.0
1 2 17.0
2 3 18.0

关于python - 按同一列加入多个 Pandas 数据框并求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42914428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com