2024-04-19 19:59:48 发布
网友
我正在尝试重新安排熊猫数据帧。在
目前我有:
id mins param 1 10 0.15 1 11 0.16 1 12 0.17 2 10 0.20 2 11 0.21 2 12 0.22
但我想重新安排并按id分组:
在大熊猫身上有没有一种有效的方法?还是我应该慢慢地用手研磨?在
谢谢
将^{}或{a2}与^{}和最后一个^{}一起使用:
df = df.pivot(index='id', columns='mins', values='param').add_prefix('param_') print (df) mins param_10 param_11 param_12 id 1 0.15 0.16 0.17 2 0.20 0.21 0.22
如果错误:
ValueError: Index contains duplicate entries, cannot reshape
它意味着重复,需要聚合。将^{}或^{}与函数mean(sum,median,…)和最后一个^{}一起使用:
mean
sum
median
print (df) id mins param 0 1 10 0.15 <- id mins dupe 1 1 10 0.50 <- id mins dupe 2 1 11 0.16 3 1 12 0.17 4 2 10 0.20 5 2 11 0.21 6 2 12 0.22 df = df.pivot_table(index='id', columns='mins', values='param', aggfunc='mean') .add_prefix('param_') print (df) mins param_10 param_11 param_12 id 1 0.325 0.16 0.17 <- (0.15+0.5)/2 = 0.325 2 0.200 0.21 0.22
df = df.groupby(['id','mins'])['param'].mean().unstack().add_prefix('param_') print (df) mins param_10 param_11 param_12 id 1 0.325 0.16 0.17 <- (0.15+0.5)/2 = 0.325 2 0.200 0.21 0.22
对于按^{}将columns name设置为None,并对列id使用{a9}:
columns name
None
id
df = df.rename_axis(None, axis=1).reset_index() print (df) id param_10 param_11 param_12 0 1 0.325 0.16 0.17 1 2 0.200 0.21 0.22
编辑:
具有多个列的解决方案:
df['param1'] = df['param'] / 4 print (df) id mins param param1 0 1 10 0.15 0.0375 1 1 10 0.50 0.1250 2 1 11 0.16 0.0400 3 1 12 0.17 0.0425 4 2 10 0.20 0.0500 5 2 11 0.21 0.0525 6 2 12 0.22 0.0550 df = df.pivot_table(index='id', columns='mins', values=['param', 'param1'], aggfunc='mean') df.columns = ['_'.join((x[0], str(x[1]))) for x in df.columns] print (df) param_10 param_11 param_12 param1_10 param1_11 param1_12 id 1 0.325 0.16 0.17 0.08125 0.0400 0.0425 2 0.200 0.21 0.22 0.05000 0.0525 0.0550
将^{} 或{a2}与^{} 和最后一个^{} 一起使用:
^{pr2}$
如果错误:
它意味着重复,需要聚合。将^{} 或^{} 与函数} 一起使用:
mean
(sum
,median
,…)和最后一个^{对于按^{} 将
columns name
设置为None
,并对列id
使用{a9}:编辑:
具有多个列的解决方案:
相关问题 更多 >
编程相关推荐