首页 > 解决方案 > 对于 Pandas 中的每个组,将给定列的第一行值替换为 NaN

问题描述

如何替换每个组的第一行值pctas和?谢谢你。NaNcitydistrict

  city district       date   pct
0    a        b   2019/8/1   0.15
1    a        b   2019/9/1   0.12
2    a        b  2019/10/1   0.25
3    c        d   2019/7/1   0.03
4    c        d   2019/8/1  -0.36
5    c        d   2019/9/1   0.57

我只能通过 获取pct数据帧的第一行值df['pct'].iloc[0]

我想要的输出将是这样的:

  city district       date   pct
0    a        b   2019/8/1   NaN
1    a        b   2019/9/1   0.12
2    a        b  2019/10/1   0.25
3    c        d   2019/7/1   NaN
4    c        d   2019/8/1  -0.36
5    c        d   2019/9/1   0.57

标签: python-3.xpandasdataframe

解决方案


使用Series.where+DataFrame.duplicated

df['pct']=df['pct'].where(df.duplicated(subset = ['city','district']))
print(df)

  city district       date   pct
0    a        b   2019/8/1   NaN
1    a        b   2019/9/1   0.12
2    a        b  2019/10/1   0.25
3    c        d   2019/7/1   NaN
4    c        d   2019/8/1  -0.36
5    c        d   2019/9/1   0.57

细节:

df.duplicated(subset = ['city','district'])


0    False
1     True
2     True
3    False
4     True
5     True
dtype: bool

推荐阅读