假设我有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
如果有True
值 B
在过去。结果如下:
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()
不知怎的,但一直没能让它发挥作用。有什么想法吗?
最佳答案
idxmax
是transform
的方式
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/