gpt4 book ai didi

python - 基于特定列进行分组并在 Python 中应用该函数

转载 作者:行者123 更新时间:2023-11-30 21:55:22 24 4
gpt4 key购买 nike

我正在学习将自定义函数应用于数据框中的每个组。假设我有如下数据框:

A       B       C
1 4 3
1 5 4
1 2 10
2 7 2
2 4 4
2 6 6

我定义了一个简单的函数来获取“B”列的长度和“C”列的总和,然后对“A”列中每个组的长度和总和进行求和,以生成“D”列。因此我希望得到以下输出:

A       D
1 20
2 15

我运行了下面的代码,但无法得到我想要的:

>>> import pandas as pd
>>>
>>> df = pd.read_csv("foo.txt", sep="\t")
>>> df
A B C
0 1 4 3
1 1 5 4
2 1 2 10
3 2 7 2
4 2 4 4
5 2 6 6
>>>
>>> def someFunction(x, y):
... length = len(x)
... total = sum(y)
... number = length + total
... print(number)
...
>>> f = lambda x: someFunction(x['B'], x['C'])
>>> output = df.groupby(['A']).apply(f)
20
20
15
>>> output
Empty DataFrame
Columns: []
Index: []
>>>

如何获得所需的输出?提前致谢。

最佳答案

这应该是工作:

import pandas as pd 

df= pd.DataFrame()

df['A']= [1,1,1,2,2,2]
df['B']= [4,3,2,7,4,6]
df['C']= [3,4,10,2,4,6]

def someFunction(data):

return len(data['B'])+ sum(data['C'])

# apply to groupby
df.groupby('A').apply(someFunction)

Output[1]:

A
1 20
2 15
dtype: int64

请记住将 DataFrame 传递给函数,而不是 xy,以便在代码中提供更多便利。

关于python - 基于特定列进行分组并在 Python 中应用该函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56890016/

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