gpt4 book ai didi

python - 如何应用具有多个拆分条件的 Pandas Groupby 并应用多个计算?

转载 作者:太空狗 更新时间:2023-10-30 01:14:58 27 4
gpt4 key购买 nike

我有一个数据框,我需要根据 2 个条件进行拆分,并将此条件应用于 3 个不同的列,然后使用这些新拆分以成对的方式对其他列执行一些计算。

所以我有一个df A

A = pd.DataFrame([[1, 5, 2, 3, 4, 1], [2, 4, 4, 5, 5, 1], [3, 3, 1, 2, 5, 4], [4, 2, 2, 3, 5, 5], [5, 1, 4, 2, 3, 1]],
columns=['A', 'B', 'C', 'D', 'E', 'F'], index=[1, 2, 3, 4, 5])

我需要根据 2 个条件拆分数据框并应用于前三列,就像这样"

condition1_colA = A[A['A'] > 1]
condition2_colA = A[A['A'] < 1]
condition1_colB = A[A['B'] > 1]
condition2_colB = A[A['B'] < 1]
condition1_colC = A[A['C'] > 1]
condition2_colC = A[A['C'] < 1]

现在,我需要对 6 个新切片数据帧中的每一个进行 3 次计算,但是这些计算按以下方式配对:

  • condition1_colA 和 condition2_colA 列 ['D']
  • condition1_colB 和 condition2_colB 列 ['E']
  • condition1_colC 和 condition2_colC 与列 ['F']

这是第一对的例子:

x = condition1_colA['D'].mean()
y = condition1_colA['D'].std()
z = condition1_colA['D'][condition1_colA['D'] > 0].count()
x1 = condition2_colA['D'].mean()
y1 = condition2_colA['D'].std()
z1 = condition2_colA['D'][condition1_colA['D'] < 0].count()

然后我们会对其他 2 对做同样的事情。并在 datframe 上组织 18 个计算。我知道如何手动执行此操作,但我希望通过 groupby 或数据透视表获得一些帮助。

谢谢

最佳答案

import pandas as pd

A = pd.DataFrame(
[[1, 5, 2, 3, 4, 1], [2, 4, 4, 5, 5, 1], [3, 3, 1, 2, 5, 4],
[4, 2, 2, 3, 5, 5], [5, 1, 4, 2, 3, 1]],
columns=['A', 'B', 'C', 'D', 'E', 'F'], index=[1, 2, 3, 4, 5])

result = []
pairs = []
for col1, col2 in zip(list('ABC'), list('DEF')):
pairs.append(col1+col2)
mask = A[col1] > 1
mask2 = mask & (A[col2] > 0)
ser = A.loc[mask, col2]
result.append((ser.mean(), ser.std(), mask2.sum()))

mask = A[col1] < 1
mask2 = mask & (A[col2] < 0)
ser = A.loc[mask, col2]
result.append((ser.mean(), ser.std(), mask2.sum()))

index = pd.MultiIndex.from_product([pairs, [1, 2]], names=['pair', 'cond'])
df = pd.DataFrame(result, index=index, columns=['mean', 'sum', 'count'])
print(df)

产量

           mean       sum  count
pair cond
AD 1 3.00 1.414214 4
2 NaN NaN 0
BE 1 4.75 0.500000 4
2 NaN NaN 0
CF 1 2.00 2.000000 4
2 NaN NaN 0

关于python - 如何应用具有多个拆分条件的 Pandas Groupby 并应用多个计算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25828300/

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