我有以下内容Dataframe
:
fk name 0 105 Coca-Cola1 1 105 Coca-Cola1 2 106 Coca-Cola2 3 115 Coca-Cola5 4 115 Coca-Cola5 5 115 Coca-Cola5 6 108 Coca-Cola8 7 105 Coca-Cola1
我想计算出现频率:
[[105, Coca-Cola1, 3], [106, Coca-Cola2, 1], [115, Coca-Cola5, 3], [108, Coca-Cola8, 1]]
知道如何获得?
你可以用groupby
与聚集size
,然后reset_index
和最后转换到numpy array
通过DataFrame.values
用numpy.ndarray.tolist
:
df = df.groupby(['fk','name']).size().reset_index().values.tolist() print (df) [[105, 'Coca-Cola1', 3], [106, 'Coca-Cola2', 1], [108, 'Coca-Cola8', 1], [115, 'Coca-Cola5', 3]]
如果是为了重要的附加参数sort=False
到groupby
:
df = df.groupby(['fk','name'], sort=False).size().reset_index().values.tolist() print (df) [[105, 'Coca-Cola1', 3], [106, 'Coca-Cola2', 1], [115, 'Coca-Cola5', 3], [108, 'Coca-Cola8', 1]]