我有一个数据框df,其中一列名为Rule_ID。它有像 -
这样的数据Rule_ID
[u'2c78g',u'df567',u'5ty78']
[u'2c78g',u'd67gh',u'df890o']
[u'd67gh',u'df890o',u'5ty78']
[u'2c78g',u'5ty78',u'df890o']
我想计算列中所有唯一的规则ID,并创建一个包含两列的新数据框df1,第一列包含唯一规则ID,第二列包含该ID的计数。例如,在上面的情况下,df1将包含 -
Rule_ID Count
u'2c78g' 3
u'df567' 1
u'5ty78' 3
u'd67gh' 2
u'df890o' 3
答案 0 :(得分:1)
选项1
df.Rule_ID.apply(pd.Series).stack().value_counts()
df890o 3
5ty78 3
2c78g 3
d67gh 2
df567 1
dtype: int64
选项2
pd.value_counts(pd.np.concatenate(df.Rule_ID.values))
df890o 3
5ty78 3
2c78g 3
d67gh 2
df567 1
dtype: int64
如果这些是字符串,请执行以下操作:
from ast import literal_eval
pd.value_counts(pd.np.concatenate([literal_eval(x) for x in df.Rule_ID.values]))
# or
# df.Rule_ID.apply(literal_eval).apply(pd.Series).stack().value_counts()
df890o 3
5ty78 3
2c78g 3
d67gh 2
df567 1
dtype: int64