是否存在一种简单的方法来标识熊猫数据框中的组,其中某个组的列的值已更改(或者该组的特定列具有多个值)?
因此,对于下面的两家公司A和B,我想知道随着时间的推移,哪家公司已转为其他状态。 (提示,公司A从NC转移到SC)。
-------------------
Yr | Company| ST |
-------------------
1 | A | NC |
2 | A | NC |
3 | A | SC |
4 | A | SC |
1 | B | AK |
2 | B | AK |
3 | B | AK |
------------------
理想情况下,我希望熊猫创建一个在公司搬迁后显示“ Y”的列:
---------------------------
Yr | Company| ST |Changed|
---------------------------
1 | A | NC | Y
2 | A | NC | Y
3 | A | SC | Y
4 | A | SC | Y
1 | B | AK | N
2 | B | AK | N
3 | B | AK | N
---------------------------
使用数字很容易,因为组中的均值将不同于任何组值。但是用文字很难...。
答案 0 :(得分:3)
将transform
与nunique
一起使用
df.groupby('Company').ST.transform('nunique').ne(1).map({True:'Y',False:'N'})
Out[418]:
0 Y
1 Y
2 Y
3 Y
4 N
5 N
6 N
Name: ST, dtype: object
#df['Change']=df.groupby('Company').ST.transform('nunique').ne(1).map({True:'Y',False:'N'})