Pandas、groupby 和其他列中的计数数据

Posted

技术标签:

【中文标题】Pandas、groupby 和其他列中的计数数据【英文标题】:Pandas, groupby and counting data in others columns 【发布时间】:2019-08-10 00:06:13 【问题描述】:

我有四列数据,包括:IdCreationDateScoreViewCount

CreationDate 具有下一个格式,例如:2011-11-30 19:41:14.960。 我需要对CreationDate 的年份进行分组,计算它们,将ScoreViewCount 相加,并添加到其他列中。

我想与 pandas 库一起使用。

谢谢!

更改之前 - 示例:

     Id   CreationDate              Score   ViewCount
0    1    2011-11-30 19:15:54.070   25      1526
1    2    2011-11-30 19:41:14.960   20      601
2    3    2012-11-30 19:42:45.470   36      1015
3    4    2018-11-30 19:44:55.593   8       1941
4    5    2011-11-30 19:53:23.387   11      5053
5    6    2018-11-30 20:04:43.757   25      5123
6    7    2011-11-30 20:08:23.267   53      8945

更改后 - 呈现这样的数据:

     Id   CreationDate              Score   ViewCount
0    1    2011                      109     16125
2    3    2012                      36      1015
3    4    2018                      33      7064                            

【问题讨论】:

【参考方案1】:

您可以通过Series.dt.year 将列转换为年份,并通过GroupBy.agg 使用具有聚合功能的列的字典进行聚合,最后添加DataFrame.reindex 如有必要,与原始DataFrame 中的列顺序相同:

#if necessary convert to datetimes
df['CreationDate'] = pd.to_datetime(df['CreationDate'])

df1 = (df.groupby(df['CreationDate'].dt.year)
         .agg('Id':'first', 'Score':'sum', 'ViewCount':'sum')
         .reset_index()
         .reindex(columns=df.columns)
       )

print (df1)
   Id  CreationDate  Score  ViewCount
0   1          2011    109      16125
1   3          2012     36       1015
2   4          2018     33       7064

【讨论】:

以上是关于Pandas、groupby 和其他列中的计数数据的主要内容,如果未能解决你的问题,请参考以下文章

Groupby并根据Pandas中的多个条件计算计数和均值

Groupby 名称用所有列中的最大值替换值 pandas

使用 pandas 在数据帧上执行 groupby,按计数排序并获取 python 中的前 2 个计数

pandas中的SQL查询:根据其他列的组合在列中连接多行

Python Pandas DF Pivot 和 Groupby

如何使用 groupby 调整 pandas 中的小计列?