You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Pandas DataFrame中新增列以统计每日记录条数?

解决方法:为DataFrame添加每日记录数字段

嗨,我来帮你搞定这个问题~你遇到的NaN问题,是因为直接把groupby后的结果赋值回原DataFrame时,索引不匹配导致的。让我一步步给你讲清楚怎么改:

为什么你的代码会返回NaN?

你写的df.groupby('date').count()会生成一个以date为索引的新DataFrame,它的结构是这样的:

dateID
2022-03-143
2022-03-151
2022-03-162

而你的原df的索引是默认的数字0-5,两者的索引完全不匹配,所以直接赋值时,原df的每一行都找不到对应的值,就会填充NaN。

正确的实现方式

我们需要用transform方法,它会把聚合后的结果广播回原DataFrame的每一行,保持索引一致,完美匹配你的需求。

方法1:使用count()(指定列)

df['daily_records'] = df.groupby('date')['ID'].transform('count')

这里指定ID列是因为count()会统计该列非空值的数量,如果你其他列没有缺失值,也可以用其他列代替。

方法2:使用size()(更直接)

如果你只是想统计每组的总记录数(不管有没有缺失值),用size()更合适,它不需要指定列:

df['daily_records'] = df.groupby('date').transform('size')

运行后的结果

执行上面任意一段代码后,你的df就会变成期望的样子:

IDdatedaily_records
1242022-03-143
342022-03-143
662022-03-143
22022-03-151
912022-03-162
202022-03-162

内容的提问来源于stack exchange,提问作者dom_2108

火山引擎 最新活动