我正在尝试基于ID
替换第一个出现的值。我的数据集如下所示:
df=
Index ID Status
0 1895001 review
1 1895001 review
2 1895001 review
3 2104264 review
4 2102404 review
5 2102404 review
6 1809905 review
7 1809905 review
8 1809905 review
9 1811700 review
我试过这个df.values[df.index, np.argmax(df.values=="review",1)] = "first review"
,但它取代了所有的:(
这是我所期待的:
df=
Index ID Status
0 1895001 first review
1 1895001 review
2 1895001 review
3 2104264 first review
4 2102404 first review
5 2102404 review
6 1809905 first review
7 1809905 review
8 1809905 review
9 1811700 first review
2条答案
按热度按时间igetnqfo1#
将布尔索引与
duplicated
的布尔逆(~
)一起使用:输出:
yh2wf1be2#
你可以使用panda的groupby方法根据ID来识别第一个出现的对象,然后使用布尔索引来更新'Status'列。
此代码基于“ID”列创建一组行,然后查找每组中第一次出现“review”的索引。然后,它将这些行的“Status”列更新为“first review”。
生成的 Dataframe 应如下所示: