【发布时间】:2017-10-29 02:44:40
【问题描述】:
df,
Name
Sri
Sri,Ram
Sri,Ram,kumar
Ram
我正在尝试计算每个值的值计数。 使用时我没有得到输出
df["Name"].values_count()
我想要的输出是,
Sri 3
Ram 3
Kumar 1
【问题讨论】:
标签: python pandas dataframe data-analysis
df,
Name
Sri
Sri,Ram
Sri,Ram,kumar
Ram
我正在尝试计算每个值的值计数。 使用时我没有得到输出
df["Name"].values_count()
我想要的输出是,
Sri 3
Ram 3
Kumar 1
【问题讨论】:
标签: python pandas dataframe data-analysis
split 列,stack 为长格式,然后count:
df.Name.str.split(',', expand=True).stack().value_counts()
#Sri 3
#Ram 3
#kumar 1
#dtype: int64
或许:
df.Name.str.get_dummies(',').sum()
#Ram 3
#Sri 3
#kumar 1
#dtype: int64
或在value_counts之前连接:
pd.value_counts(pd.np.concatenate(df.Name.str.split(',')))
#Sri 3
#Ram 3
#kumar 1
#dtype: int64
时间:
%timeit df.Name.str.split(',', expand=True).stack().value_counts()
#1000 loops, best of 3: 1.02 ms per loop
%timeit df.Name.str.get_dummies(',').sum()
#1000 loops, best of 3: 1.18 ms per loop
%timeit pd.value_counts(pd.np.concatenate(df.Name.str.split(',')))
#1000 loops, best of 3: 573 µs per loop
# option from @Bharathshetty
from collections import Counter
%timeit pd.Series(Counter((df['Name'].str.strip() + ',').sum().rstrip(',').split(',')))
# 1000 loops, best of 3: 498 µs per loop
# option inspired by @Bharathshetty
%timeit pd.value_counts(df.Name.str.cat(sep=',').split(','))
# 1000 loops, best of 3: 483 µs per loop
【讨论】:
df.Name.str.lower()....
ignore case。 str.lower() 怎么了?