按pandas中的列数据对数据进行分组

时间:2014-01-21 15:52:42

标签: python pandas

我在pandas DataFrame中有一些数据:

     text                                               polarity
0    -Mi hijo es tan rico que le regalo un BMW a su...   NEUTRAL
1    The new BMW 3 Series is awarded 5 stars in the...   POSITIVE
2    @GEAGarratt BMW hand over 200 + electric vehic...   POSITIVE
3    I asked Sauber about more info or images of th...   NEUTRAL
4    bmw >>>     NEUTRAL

我想要的是按列对这些进行分组,以便稍后绘制每个极性的实例数。我一直在尝试不同的groupby组合,但到目前为止失败了。我会喜欢小推。

也就是说,我可能正在寻找与此类似的输出

'polarity' 'text'
NEUTRAL    -Mi hijo es tan rico que le regalo un BMW a su...
           I asked Sauber about more info or images of th...
POSITIVE   The new BMW 3 Series is awarded 5 stars in the...
           The new BMW 3 Series is awarded 5 stars in the...

3 个答案:

答案 0 :(得分:0)

假设您的数据框名为my_dataframe,语法类似于:

my_dataframe[my_dataframe['polarity'] == 'POSTIVE']['text']

答案 1 :(得分:0)

如果您只想绘制实例数量,比如在条形图或其他内容中,我建议如下:

df.groupby('polarity').count().plot(kind='bar')

这将为您提供groupby对象的条形图,其中包含极性计数。如果您只想将数据帧分组返回,那么只需使用我上面所做的第一部分。

grouped = df.groupby('polarity')

这应该可以为您提供所需的输出。

我建议您阅读pandas groupby method,这将使您更好地理解以您希望的方式处理数据。

答案 2 :(得分:0)

要输出您期望的内容,您可以:

首先,使用reindex设置列的顺序

然后使用sort按极性

对数据帧进行排序
df.reindex(columns=['polarity', 'text']).sort('polarity')