Python:为DataFrame中每组的首个观察值赋值
为什么在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
你可能会得到你想要的结果,如果你把它赋值给一个新的数据框(df),或者直接在原来的数据框上进行修改...比如这样写:df.replace(1.5, nan, inplace=True)
7
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]
当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。