gpt4 book ai didi

python - 创建列,指示基于其他列的特定值的历史存在性

转载 作者:行者123 更新时间:2023-12-02 07:45:08 25 4
gpt4 key购买 nike

假设我有df如下:

df = pd.DataFrame({
'A': ['a', 'a', 'a', 'a', 'b', 'b', 'b', 'b'],
'B': [False, True, False, False, True, False, False, True]
})

df已按 A 排序(显然)和时间(降序)。因此对于 A 定义的每个组, B 中的值是按时间降序排列的。我想做的是添加一列 C对于每个组来说,是 True如果有TrueB在过去。结果如下:

    A   B       C
0 a False True
1 a True False
2 a False False
3 a False False
4 b True True
5 b False True
6 b False True
7 b True False

我怀疑我需要使用groupby()idxmax()不知怎的,但一直没能让它发挥作用。有什么想法吗?

最佳答案

idxmaxtransform的方式

df['New']=df.index<df.iloc[::-1].groupby('A').B.transform('idxmax').sort_index()
df
A B New
0 a False True
1 a True False
2 a False False
3 a False False
4 b True True
5 b False True
6 b False True
7 b True False

如果全部为假

s1=df.index<df.iloc[::-1].groupby('A').B.transform('idxmax').sort_index()
s2=df.groupby('A').B.transform('any')
df['New']=s1&s2

关于python - 创建列,指示基于其他列的特定值的历史存在性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61460993/

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