我开始使用熊猫,并且在较大的DataFrame中有一列数据,例如

0                  one two
1            two seven six
2           three one five
3    seven five five eight
4                 six four
5                    three
dtype: object


我想做的是将单词序列分成各个组成部分,然后获得单词的唯一集合或计数。我可以很好地分割

numbers.str.split(' ')

0                    [one, two]
1             [two, seven, six]
2            [three, one, five]
3    [seven, five, five, eight]
4                   [six, four]
5                       [three]
dtype: object


但是,我不确定从这里去哪里。再次,我想有这样的输出

['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight']


或包含计数的字典中的相同内容,或等效于这两者之一的Series / DataFrame。

到目前为止,我能做的最好的就是将apply()与Set结合使用以获得唯一的单词。到目前为止,pandas是一个非常优雅的包装,对于比我更了解的人来说,这似乎很容易实现。

提前致谢!

最佳答案

如果我对您的理解正确,我认为您可以使用熊猫按照以下方式进行操作。在分割字符串之前,我将从系列开始:

print s

0                  one two
1            two seven six
2           three one five
3    seven five five eight
4                 six four
5                    three

stacked = pd.DataFrame(s.str.split().tolist()).stack()
print stacked

0  0      one
   1      two
1  0      two
   1    seven
   2      six
2  0    three
   1      one
   2     five
3  0    seven
   1     five
   2     five
   3    eight
4  0      six
   1     four
5  0    three


现在,只需计算系列的值计数即可:

print stacked.value_counts()

five     3
one      2
three    2
six      2
two      2
seven    2
eight    1
four     1
dtype: int64

10-05 18:06