处理数据框

时间:2017-06-27 15:34:02

标签: python pandas dataframe

我有一个数据框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

1 个答案:

答案 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