gpt4 book ai didi

python - 在 Pandas 中使用 groupby 时检查某些列的值

转载 作者:行者123 更新时间:2023-12-04 00:59:44 25 4
gpt4 key购买 nike

我有这样一个数据框

df = pd.DataFrame({'Name': ['Bob', 'Bob', 'Bob', 'Joe', 'Joe', 'Joe'],
'ID': [1,2,3,4,5,6],
'Value': [1,1,1,0,0,1]})
df

Name ID Value
Bob 1 1
Bob 2 1
Bob 3 1
Joe 4 0
Joe 5 0
Joe 6 1

目标是计算一个 result 列。这是通过检查 name 列中的每个组来完成的,在本例中是 Bob & Joe。

因此对于每个组,如果 value 列中的值都是 1,则该组的 result 列中的值将全部为 1。如果值全部为 0,则该组的 result 列值将全部为 0。如果值是 1 和 0 的混合,则 result 该组的列将全部为 0。

所以输出应该是这样的:

Name    ID    Value    Result
Bob 1 1 1
Bob 2 1 1
Bob 3 1 1
Joe 4 0 0
Joe 5 0 0
Joe 6 1 0

困难在于创建这些组然后检查每个组。

我的尝试:

df = df.groupby('Name')

df['Result'] = df.apply(lambda x: x['Value'])

最佳答案

allgroupby+transform一起使用:

df['Result'] = df.groupby('Name')['Value'].transform('all').astype(int)
# or df['Result'] = df['Value'].eq(1).groupby(df['Name']).transform('all').astype(int)
print(df)

  Name  ID  Value  Result
0 Bob 1 1 1
1 Bob 2 1 1
2 Bob 3 1 1
3 Joe 4 0 0
4 Joe 5 0 0
5 Joe 6 1 0

关于python - 在 Pandas 中使用 groupby 时检查某些列的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59581258/

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