我正在尝试计算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
我想计算重复次数(即48h
,72h
,96h
,120h
)在特定列表blabla
中出现的次数。在这种情况下3次。
答案 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