按日期合并CSV条目并计算每个日期的条目

时间:2019-04-06 10:01:02

标签: python pandas count pandas-groupby

我有一个使用Pandas DataFrame进行操作的CSV文件。我拥有的数据是Tweet数据,我想做的是根据日期合并单元格,还添加了一个额外的列,该列显示特定日期有多少Tweets。例如:

原始数据帧示例:

date        mentions    photos    replies    retweets    likes    polarity
2011-04-01     0          1         10          5          10        0.1
2011-04-01     1          1          5          3          20       -0.3
2011-04-02     2          0         15          2           5        0.5
2011-04-02     3          0          0          4         100       -0.5
2011-04-02     0          1          2          1          50        0.9
2011-04-03     1          1          1          2           2        0.2

预期的输出数据框:

date      mentions    photos    replies    retweets    likes    polarity  counts
2011-04-01     1          2         15          8        30       -0.2       2
2011-04-02     5          1         17          7       155        0.9       3   
2011-04-03     1          1          1          2         2        0.2       1

通常我会使用pd.DataFrame().groupby(['date']).sum(),它会根据日期合并单元格,并汇总其他列的值,但是现在我想在右侧添加一个额外的列,以计算Tweets的数量。我希望我已经足够清楚了,但是如果没有,请告诉我。

是否有内置的库功能可以解决此问题,还是我必须手动对其进行编码?

谢谢。

1 个答案:

答案 0 :(得分:1)

最简单的方法是添加由DataFrame.assignSeries.value_counts创建的新列:

df = df.groupby('date').sum().assign(counts=df['date'].value_counts())
print (df)
            mentions  photos  replies  retweets  likes  polarity  counts
date                                                                    
2011-04-01         1       2       15         8     30      -0.2       2
2011-04-02         5       1       17         7    155       0.9       3
2011-04-03         1       1        1         2      2       0.2       1

一般解决方案-为所有不包含dict.fromkeys的列创建带有date的聚合字典-可以用于聚合size,但最后必须rename使用它:< / p>

d = dict.fromkeys(df.columns.difference(['date']), 'sum')
d['date'] = 'size'
df = df.groupby('date').agg(d).rename(columns={'date':'counts'})
print (df)
            likes  mentions  photos  polarity  replies  retweets  counts
date                                                                    
2011-04-01     30         1       2      -0.2       15         8       2
2011-04-02    155         5       1       0.9       17         7       3
2011-04-03      2         1       1       0.2        1         2       1

详细信息

print (d)
{'likes': 'sum', 'mentions': 'sum', 'photos': 'sum', 'polarity': 'sum', 
 'replies': 'sum', 'retweets': 'sum', 'date': 'size'}