大佬教程收集整理的这篇文章主要介绍了如何将值列表转换为熊猫列?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个如下所示的 df,我想将值转换为列(枢轴)操作。我无法执行,因为我的数据在列表中。
我的示例输入有两列(分数和类别)。这些列是有序值。即,第 19 类的分数为 0.97,而第 0 类的分数为 0.77。我想转换我的 df,使类值成为列名,并且相应的分数将在相应的列中。
样本输入:
file_name scores classes
0 voc_32.jpg [0.97,0.77] [19.0,0.0]
1 voc_22.jpg [0.92,0.64,0.83,0.55] [17.0,1.0,11.0,11.0]
预期输出:
file_name 0 1 11 17 19
0 voc_32.jpg 0.77 0.97
1 voc_22.jpg 0.64 [0.83,0.55] 0.92
任何帮助都是可观的。
在列表推导中创建字典列表并传递给DataFrame
构造函数,最后通过DataFrame.join
添加到原始字典:
df1 = (pd.DataFrame([Dict(zip(b,a)) for a,b in zip(df.scores,df.classes)],index=df.indeX).sort_index(axis=1).rename(columns=int))
df2 = df[['file_name']].join(df1)
使用 DataFrame.pop
删除列的类似解决方案:
df1 = (pd.DataFrame([Dict(zip(b,b in zip(df.pop('scores'),df.pop('classes'))],index=df.indeX).sort_index(axis=1).rename(columns=int))
df2 = df.join(df1)
print (df2)
file_name 0 1 11 17 19
0 voc_32.jpg 0.77 NaN NaN NaN 0.97
1 voc_22.jpg NaN 0.64 0.83 0.92 NaN
编辑:对于列表,如果多个类使用 Series.explode
作为 flattem,然后在 GroupBy.agg
中聚合自定义函数并通过 SerieS.Unstack
进行重塑:
f = lambda x: list(X) if len(X) > 1 else x
df1 = (df.apply(pd.Series.explodE)
.groupby(['file_name','classes'])['scores']
.agg(f)
.unstack()
.rename(columns=int))
print (df1)
classes 0 1 11 17 19
file_name
voc_22.jpg NaN 0.64 [0.83,0.85] 0.92 NaN
voc_32.jpg 0.77 NaN NaN NaN 0.97
df2 = df[['file_name']].join(df1,on='file_name')
print (df2)
file_name 0 1 11 17 19
0 voc_32.jpg 0.77 NaN NaN NaN 0.97
1 voc_22.jpg NaN 0.64 [0.83,0.85] 0.92 NaN
以上是大佬教程为你收集整理的如何将值列表转换为熊猫列?全部内容,希望文章能够帮你解决如何将值列表转换为熊猫列?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。