gpt4 book ai didi

python - 添加一个标志,指示 pandas 中每个组的列已更改

转载 作者:太空宇宙 更新时间:2023-11-04 00:23:57 25 4
gpt4 key购买 nike

我有一个 DataFrame,其 ID 为公司名称,如下所示。

import pandas as pd

df = pd.DataFrame({
"id": [1, 1, 1, 2, 2, 2, 3, 3, 3],
"company": ["A", "A", "B", "C", "C", "C", "D", "E", "F"]},
columns=["id", "company"]
)
id company
0 1 A
1 1 A
2 1 B
3 2 C
4 2 C
5 2 C
6 3 D
7 3 E
8 3 F

如何向上面的 DataFrame 添加一个指示作业更改的标志,如下所示?

   id company  job_change
0 1 A 0
1 1 A 0
2 1 B 1
3 2 C 0
4 2 C 0
5 2 C 0
6 3 D 0
7 3 E 1
8 3 F 1

关于如何在 groupby 中使用 stackoverflow 中的 pandas 获取 diff 的解释很少。

最佳答案

您可以将自定义函数与比较 shift 结合使用通过 bfill 向后填充替换 NaN 编辑组,最后通过 astype 将 bool 掩码转换为整数:

df['flag'] = df.groupby('id')['company'].apply(lambda x :x.ne(x.shift().bfill())).astype(int)
print (df)
id company flag
0 1 A 0
1 1 A 0
2 1 B 1
3 2 C 0
4 2 C 0
5 2 C 0
6 3 D 0
7 3 E 1
8 3 F 1

感谢@pansen 提供更好的解决方案:

df['flag'] = df.groupby("id")["company"].shift().bfill().ne(df['company']).astype(int)
print (df)
id company flag
0 1 A 0
1 1 A 0
2 1 B 1
3 2 C 0
4 2 C 0
5 2 C 0
6 3 D 0
7 3 E 1
8 3 F 1

关于python - 添加一个标志,指示 pandas 中每个组的列已更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48109520/

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