按日期合并CSV条目并按d计数条目

2024-05-23 18:43:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个CSV文件,我正在使用熊猫数据帧来操纵它。我拥有的数据是Tweet数据,我正在尝试的是根据日期合并单元格,但也添加了一个额外的列,显示在特定的一天有多少Tweet的计数。例如:

原始数据帧示例:

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(),它会根据日期合并单元格,并对其他列值求和,但现在我想在右侧添加一个额外的列来计算tweet的数量。我希望我说得够清楚,如果不清楚请告诉我。你知道吗

是否有一个内置的库功能来处理这个问题,或者我必须手动编写代码?你知道吗

谢谢你。你知道吗


Tags: 文件csv数据示例原始数据datetweet计数
1条回答
网友
1楼 · 发布于 2024-05-23 18:43:49

最简单的方法是添加由^{}^{}创建的新列:

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

一般解决方案-通过不带date的所有列为带有dict.fromkeys的聚合创建字典-可以使用size聚合,但最后一个是必需的rename它:

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'}

相关问题 更多 >