EGM*_*686 7 python dataframe pandas
我有一个具有以下结构的 df:
id a1_l1 a2_l1 a3_l1 a1_l2 a2_l2 a3_l2
1 1 5 3 1 2 3
2 1 5 3 1 2 3
3 2 5 3 5 5 3
4 5 5 3 5 5 3
5 5 5 2
6 5 5 2
7 5 5 2
8 2 5 2
9 3 5 1
10 3 5 1
Run Code Online (Sandbox Code Playgroud)
我想总结在一个表格中,这样我就可以得到:
l1 l2
a1 0.4 0.5
a2 1 0.5
a3 0 0
Run Code Online (Sandbox Code Playgroud)
我正在做的是计算 5 出现的次数除以有效响应的数量,例如:
a1, l1 等于 0.4,因为我有 4 个 5 的值除以 10。a2, l1 等于 0.5,因为我有 2 个 5 的值除以每列 4 个有效响应。
谢谢!
您可以重塑一个具有 MultiIndex 的数据帧,然后将(sum真值等于 5)除以 not na。最后,unstack:
df2 = df.set_index('id')
df2.columns = df2.columns.str.split('_', expand = True)
df2 = (df2.eq(5).sum()/df2.notna().sum()).unstack()
Run Code Online (Sandbox Code Playgroud)
输出:
l1 l2
a1 0.4 0.5
a2 1.0 0.5
a3 0.0 0.0
Run Code Online (Sandbox Code Playgroud)