gpt4 book ai didi

python - 使用 'if in' 时元素现有标识错误

转载 作者:行者123 更新时间:2023-12-01 01:47:44 24 4
gpt4 key购买 nike

这是我的代码:

df1 = pd.DataFrame({'a': [1,2,3,1,2,3,3],'b':[1,2,3,1,2,3,3],'type':[1,0,1,0,1,0,1]})
def add_buy_label(group):
behavior_type = group.type.astype(int)
if 1 in group['type']:
group['buy_label'] = 1
else:
group['buy_label'] = 0

return group[['a', 'b', 'type','buy_label']]

上面的函数是只要组中存在一个(type = 1),就将所有a-b项目的buy_label设置为1,但是之后的结果

df1.groupby(['a','b'],as_index = False).apply(add_buy_label)

    a  b  type  buy_label
0 1 1 1 0
1 2 2 0 1
2 3 3 1 0
3 1 1 0 0
4 2 2 1 1
5 3 3 0 0
6 3 3 1 0

很明显,带有3的行是错误的,因为(a=3,b=3)组中存在type = 1,但相应的buy_label是0。

我该如何修复它?

最佳答案

测试索引值存在问题,而不是列值。

#sorting for better seen groups 
df1 = df1.sort_values(['a','b'])
df2 = df1.groupby(['a','b'],as_index = False).apply(add_buy_label)
print (df2)
a b type buy_label
0 1 1 1 0
3 1 1 0 0
1 2 2 0 1 <- return 1 only because index == 1 per group (2,2)
4 2 2 1 1
2 3 3 1 0
5 3 3 0 0
6 3 3 1 0

因此需要 1any 进行 comapre检查至少一个 True:

if group['type'].eq(1).any():
#what is same as
if (group['type'] == 1).any():

关于python - 使用 'if in' 时元素现有标识错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51077070/

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