计算列表中的组

时间:2015-09-30 11:06:11

标签: python list pandas

我正在尝试计算python中列表blabla中不同文本标签组的数量。例如

for i in blabla['Condition'].unique():
    print i

其输出为:

no1 med1 48h
no1 med1 72h
no1 med1 96h
no1 med1 120h
no2 med1 48h
no2 med1 72h
no2 med1 96h
no2 med1 120h
no1 med2 48h
no1 med2 72h
no1 med2 96h
no1 med2 120h

我想计算重复次数(即48h72h96h120h)在特定列表blabla中出现的次数。在这种情况下3次。

4 个答案:

答案 0 :(得分:1)

DataFrame中“48h”的数量

>>> df
     no   med hours
0   no1  med1   48h
1   no1  med1   72h
2   no1  med1   96h
3   no1  med1  120h
4   no2  med1   48h
5   no2  med1   72h
6   no2  med1   96h
7   no2  med1  120h
8   no1  med2   48h
9   no1  med2   72h
10  no1  med2   96h
11  no1  med2  120h
>>> df.hours[df.hours == "48h"].count()
3

答案 1 :(得分:1)

value_counts有一个内置方法:

In [9]:
df['hours'].value_counts()

Out[9]:
48h     3
120h    3
72h     3
96h     3
Name: hours, dtype: int64

答案 2 :(得分:0)

你可以尝试:

>>> ids = set(' '.join(item.split()[:2])
...           for item in blabla['Condition'].unique()))
# set(['no2 med1', 'no1 med1', 'no1 med2'])
>>> len(ids)
3

即,将每个项目的前两个单词视为其标识符,并计算唯一标识符的数量。

(有必要使用item.split()[:2]将列表join转换回字符串,因为这里需要列出cannot be used as set elements以使其唯一。)

答案 3 :(得分:0)

你可以使用Python的collections.Counter

import collections

data = [
    "no1 med1 48h",
    "no1 med1 72h",
    "no1 med1 96h",
    "no1 med1 120h",
    "no2 med1 48h",
    "no2 med1 72h",
    "no2 med1 96h",
    "no2 med1 120h",
    "no1 med2 48h",
    "no1 med2 72h",
    "no1 med2 96h",
    "no1 med2 120h"]

for k, v in collections.Counter([entry.split()[2] for entry in data]).items():
    print '{:5} {}'.format(k,v)

这将显示以下内容:

96h   3
120h  3
72h   3
48h   3