对于熊猫中的每个组,将给定列的第一行值替换为NaN

时间:2019-12-26 11:07:16

标签: python-3.x pandas dataframe

对于每个pctNaN组,如何将city的第一行的值替换为district?谢谢。

  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

1 个答案:

答案 0 :(得分:2)

使用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