操作数据帧

2024-03-28 13:19:45 发布

您现在位置:Python中文网/ 问答频道 /正文

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

Tags: 数据iddf规则countrule计数df1
1条回答
网友
1楼 · 发布于 2024-03-28 13:19:45

选项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

相关问题 更多 >