2017-06-27 20 views
0

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

尝试解决方案吗? – EFT

回答

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 
+0

TypeError:必须使用Series实例调用unbound方法nunique()作为第一个参数(改为获得str实例) – ComplexData

+0

@Dreamer现在应该修复它。 – piRSquared

+0

它给我的结果像 - ['df890o','5ty78','2c78g'] 3,因为所有这三个ID都有相同的计数。你能打破它吗?因为每个单元格中只有一个规则ID,并在其旁边有相应的计数。非常感谢!你一直很有帮助 – ComplexData