Python:为DataFrame中每组的首个观察值赋值

1 投票
2 回答
2581 浏览
提问于 2025-04-17 21:00

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

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

撰写回答