用熊猫计算一些出现次数分组数据

时间:2018-11-08 11:27:43

标签: python pandas grouping

我有一个这样的数据集:

id    date       body        sentiment
1     1/1/2018   Some Text   Positive
2     1/1/2018   Some Text   Negative
3     1/1/2018   Some Text   None
4     1/2/2018   Some Text   Positive
5     1/2/2018   Some Text   None

每天,我都有一些信息,例如正文(一般文字)和相关的情感。 我想知道每天的正数,负数和无(无值)行数。

我已经尝试过类似的操作,但是不起作用:

df.groupby('date', 'sentiment').count()

df['positive'] = df.groupby('date', 'sentiment').apply(lambda x: x is  Positive).count()

有什么想法吗?

1 个答案:

答案 0 :(得分:5)

crosstabmerge一起使用并退出联接:

df = df.merge(pd.crosstab(df['date'], df['sentiment']), on='date', how='left')
print (df)
   id      date       body sentiment  Negative  None  Positive
0   1  1/1/2018  Some Text  Positive         1     1         1
1   2  1/1/2018  Some Text  Negative         1     1         1
2   3  1/1/2018  Some Text      None         1     1         1
3   4  1/2/2018  Some Text  Positive         0     1         1
4   5  1/2/2018  Some Text      None         0     1         1

详细信息:

print (pd.crosstab(df['date'], df['sentiment']))
sentiment  Negative  None  Positive
date                               
1/1/2018          1     1         1
1/2/2018          0     1         1

使用GroupBy.sizejoin的另一种解决方案:

df = df.join(df.groupby(['date', 'sentiment']).size().unstack(fill_value=0), on='date')