gpt4 book ai didi

python - 将新列添加到 python pandas 中的分组对象

转载 作者:太空宇宙 更新时间:2023-11-03 16:57:19 25 4
gpt4 key购买 nike

我正在尝试执行以下操作:我有一个由四列组成的数据框。我按 column0 对框架进行分组,然后对分组对象调用函数以在每个组中添加一个附加列。但是,当我尝试在分组对象上调用该函数时,出现错误。我的代码如下所示:

def function(x):
return x['column2']-x['column1']


Groupeddf = df.groupby('column0')
for key, group in Groupeddf:
Nullgroup=group[group.column3 == 0]
Nullgroup['new_column']=Nullgroup.apply(function, axis=1)

当我尝试代码时,我得到ValueError:无法设置没有定义索引的框架和无法转换为系列的值

我的数据框属于以下类型:

    column0  column1  column2  column3
0 a 2 5 1
1 a 3 7 0
2 b 1 3 4
3 c 3 5 0

有人知道如何解决这个问题吗?

最佳答案

您可以尝试groupby使用自定义函数 floc :

def f(x):
x.loc[x.column3 == 0, 'new_column'] = x['column2'] - x['column1']
return x

print df.groupby('column0').apply(f)
column0 column1 column2 column3 new_column
0 a 2 5 1 NaN
1 a 3 7 0 4
2 b 1 3 4 NaN
3 c 3 5 0 2

但也许groupby可以省略:

df.loc[df.column3 == 0, 'new_column']  =  df['column2'] - df['column1']
print df
column0 column1 column2 column3 new_column
0 a 2 5 1 NaN
1 a 3 7 0 4
2 b 1 3 4 NaN
3 c 3 5 0 2

关于python - 将新列添加到 python pandas 中的分组对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35317219/

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