Python:为DataFrame中每个组的第一次观察指定值

时间:2014-03-05 22:34:04

标签: python group-by pandas

为什么在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。

2 个答案:

答案 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)