首页 > 解决方案 > 如何使用 pandas 记录跨列是否发生特定更改?

问题描述

这是我用来创建数据框的代码:

data = [['Anna',1,1,2,2,3],['Bob',2,2,3,1,1],['Chloe',1,1,2,3,4],
['David',1,2,2,2,1]]

df = pd.DataFrame(data, columns = ['Name', 'A','B','C','D','E'])

我想创建一个列来说明是否在整个表中发生了特定更改。例如,对于这个数据集,我希望该列表示该人是从“1 到 2 到 3”还是“1 到 2 到 3 到 4”。因此,对于这个特定的数据框,Anna 和 Chloe 都会在该列中有一个指示符来传达他们经历了这些变化。

预期结果应在数据框中具有以下列:

df['Column'] = ['1-2-3','NA','1-2-3-4','NA']

标签: pythonpandas

解决方案


您可以采取以下方法:

cond=(~m.diff(axis=1).lt(0).any(axis=1))
df=df.assign(new_col=np.where(cond,
        m.apply(lambda x: '-'.join(map(str,(dict.fromkeys(x).keys()))),axis=1),'NA'))
print(df)

    Name  A  B  C  D  E  new_col
0   Anna  1  1  2  2  3    1-2-3
1    Bob  2  2  3  1  1       NA
2  Chloe  1  1  2  3  4  1-2-3-4
3  David  1  2  2  2  1       NA

推荐阅读