为什么在Python中,使用Pandas,我们不能使用以下内容为每个组的第一个观察值赋值?
df['A'].groupby(df.ID).first()==0
or
df['A'].groupby(df.ID).first()==np.nan
DataFrame的样子:
ID A
1 2
1 1
1 .45
2 .14
2 3
2 4
换句话说,我想要
ID A
1 0 or NaN
1 1
1 .45
2 0 or NaN
2 3
2 4
虽然我已经安装了Pandas 0.13,但 cumcount
对我不起作用。像其他人一样,Pandas 0.13安装有错误,我想避免处理Pandas 0.13。
答案 0 :(得分:6)
In [24]: df = read_csv(StringIO(data),sep='\s+')
In [25]: df
Out[25]:
ID A
0 1 2.00
1 1 1.00
2 1 0.45
3 2 0.14
4 2 3.00
5 2 4.00
[6 rows x 2 columns]
In [26]: df.loc[df.groupby('ID',as_index=False).head(1).index,'A'] = np.nan
In [27]: df
Out[27]:
ID A
0 1 NaN
1 1 1.00
2 1 0.45
3 2 NaN
4 2 3.00
5 2 4.00
[6 rows x 2 columns]
答案 1 :(得分:0)
如果您将其分配给新的df或修改它以进行原地更改,您可能会得到您想要的... df.replace(1.5,nan,inplace = True)