pandas 计算 Dataframe 中每列的出现次数

vfhzx4xs  于 2023-02-06  发布在  其他
关注(0)|答案(3)|浏览(157)

我有一个示例 Dataframe ,其中所有数字都是用户ID:
| 从|到|
| - ------|- ------|
| 1个|三个|
| 1个|第二章|
| 第二章|三个|
如何计算每列的出现次数,基于相同的值将其相加,并在新的 Dataframe 中以以下格式显示?
| 用户ID|发生率|
| - ------|- ------|
| 1个|第二章|
| 第二章|第二章|
| 三个|第二章|
谢谢你。

kgsdhlau

kgsdhlau1#

IIUC,您可以stack然后value_counts

out = (df.stack().value_counts()
       .to_frame('Occurences')
       .rename_axis('UserID')
       .reset_index())
print(out)

   UserID  Occurences
0       1           2
1       2           2
2       3           2
inb24sb2

inb24sb22#

DataFrame.meltGroupBy.size一起使用:

df = df.melt(value_name='UserID').groupby('UserID').size().reset_index(name='Occurences')
print (df)
   UserID  Occurences
0       1           2
1       2           2
2       3           2
ybzsozfc

ybzsozfc3#

pd.Series.value计数方法可用于对“from”和“to”列中每个userID的示例进行计数,pd.concat可用于合并结果。最后,使用pd.DataFrame.reset索引方法从结果系列创建 Dataframe :

import pandas as pd
data_frame = pd.DataFrame({'from': [1, 1, 2], 'to': [3, 2, 3]})

occur = pd.concat([df['from'].value_counts(), df['to'].value_counts()])
result_df = occur.reset_index()
result_df.columns = ['UserID', 'occur']
result_df = result_df.groupby(['UserID'])['occur'].sum().reset_index()

   UserID         Occur
0       1           2
1       2           2
2       3           2

相关问题