如何识别组内已更改的值-熊猫

时间:2018-11-07 02:34:49

标签: python pandas pandas-groupby

是否存在一种简单的方法来标识熊猫数据框中的组,其中某个组的列的值已更改(或者该组的特定列具有多个值)?

因此,对于下面的两家公司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
---------------------------

使用数字很容易,因为组中的均值将不同于任何组值。但是用文字很难...。

1 个答案:

答案 0 :(得分:3)

transformnunique一起使用

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'})