查找Pandas数据帧(时间序列)列中具有不同值的所有行

2024-06-16 09:03:50 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我在Python中有一个pandas数据框,它显示了不同部门的业务部门主管的姓名。它可能看起来像this 并且可以重新创建为:

import pandas as pd
import numpy as np

d = pd.DataFrame({'Boss_January': ['Nina', 'Lena', 'Max', np.NaN], 'Boss_February': ['Nina', 'Emilia','Max','Leonie'],'Boss_March':['Nina','Lena','Mark','Leonie']})

我想查找业务部门负责人发生变化的部门,即不同列的值不完全相同的行。

结果应包括单元1、单元2和单元3,因为单元引线发生了更改(以及缺少值),但不包括单元0。在

由于实际的数据帧有更多的列,所以我不想通过遍历行并检查是否Boss_January==Boss_二月==Boss_March来检查所有值。在


Tags: 数据importpandasasnpmax单元部门
2条回答

您可以检查是否与第一个系列相等,测试所有值是否为True,然后取负数:

res = df[~df.eq(df.iloc[:, 0], axis=0).all(1)]

print(res)

  Boss_February Boss_January Boss_March
1        Emilia         Lena       Lena
2           Max          Max       Mark
3        Leonie          NaN     Leonie

如果只需要索引,则不需要对数据帧进行子集设置:

^{pr2}$

您可以使用applyaxis=1来聚合列,并要求在所有列中有多个unique元素,如:

d[d.apply(lambda x: len(x.unique())!=1, axis=1)]

相关问题 更多 >