gpt4 book ai didi

python - 计算 pandas DataFrame 中一组列的平均值的最有效方法

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

我有一个包含如下列的 DataFrame:

["A_1", "A_2", "A_3", "B_1", "B_2", "B_3"]

我想将各种 A 和 B 列分别“折叠”在一个列中,并计算它们的平均值。简而言之,在操作结束时我会得到:

["A", "B"]

其中“A”是所有“A”列的列平均值,“B”是所有“B”列的平均值。

据我所知,groupby 不适合这项任务,或者我使用不当:

grouped = data.groupby([item for item in data if "A" not in item])

如果我使用 axis=1,我在调用 mean() 时得到的只是一个空的 DataFrame,否则我就得不到预期的效果。我想避免构建一个单独的 DataFrame 以通过迭代填充手段(例如,通过分别计算手段然后添加它们,如 new_df["A"] = mean_a)。对此有有效的解决方案吗?

最佳答案

您想使用内置的 mean() 函数,它接受一个 axis 参数来指定逐行均值。由于您知道您想要的不同方式的特定列名称约定,您可以使用下面的示例代码非常有效地完成它。在这里,我选择只创建两个额外的列,而不是实际销毁现有数据。我也可以将这些新列放入一个新的数据框中;这仅取决于您的需求以及对您来说方便的方式。相同的基本思想在任何一种情况下都适用。

In [1]: import pandas

In [2]: dfrm = pandas.DataFrame([[1,2,3,4,5,6],[7,8,9,10,11,12],[13,14,15,16,17,18]], columns = ['A_1', 'A_2', 'A_3', 'B_1', 'B_2', 'B_3'])

In [3]: dfrm
Out[3]:
A_1 A_2 A_3 B_1 B_2 B_3
0 1 2 3 4 5 6
1 7 8 9 10 11 12
2 13 14 15 16 17 18

In [4]: dfrm["A_mean"] = dfrm[[elem for elem in dfrm.columns if elem[0]=='A']].mean(axis=1)

In [5]: dfrm
Out[5]:
A_1 A_2 A_3 B_1 B_2 B_3 A_mean
0 1 2 3 4 5 6 2
1 7 8 9 10 11 12 8
2 13 14 15 16 17 18 14

In [6]: dfrm["B_mean"] = dfrm[[elem for elem in dfrm.columns if elem[0]=='B']].mean(axis=1)

In [7]: dfrm
Out[7]:
A_1 A_2 A_3 B_1 B_2 B_3 A_mean B_mean
0 1 2 3 4 5 6 2 5
1 7 8 9 10 11 12 8 11
2 13 14 15 16 17 18 14 17

关于python - 计算 pandas DataFrame 中一组列的平均值的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11265116/

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