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

标签 python pandas dataframe pandas-groupby

假设我有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/

相关文章:

Python:使用一系列汇总数据框中的数据

python - 高级聚合 pandas python

python - 解析大文件的有效方法

python - argparse 用于未知数量的参数和未知名称

列数据中的python pandas read_csv定界符

Python:如何删除多列具有相等值的行?

sql - 如何使用selectExpr在spark数据帧中转换结构数组?

python - 比较两列中的值并提取数据框中第三列的值

python - 获取Docker容器内主机的MAC地址

python - 如何在 Python 中包装 OpenCV BOW