程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Python Pandas:按行透视 DataFrame 列大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Python Pandas:按行透视 DataFrame 列?

开发过程中遇到Python Pandas:按行透视 DataFrame 列的问题如何解决?下面主要结合日常开发的经验,给出你关于Python Pandas:按行透视 DataFrame 列的解决方法建议,希望对你解决Python Pandas:按行透视 DataFrame 列有所启发或帮助;

我有一个如下所示的 Pandas DataFrame,显示学生在多个科目中的分数:

       name    Subject    score
0       Tom          A       91
1       Tom          B       92
2       Tom          C       93
3       Bob          A       94
4       Bob          C       95
5       Ali          B       96
6       Ali          C       97

请注意,并非每个学生的所有科目都有分数。我想将它转变成这样的 DataFrame:

      name     A     B     C
0      Tom    91    92    93
1      Bob    94          95    
2      Ali          96    97

在此支点中要实现的目标:

  1. 按“名称”对分数进行分组
  2. 插入主题列
  3. 在姓名和科目的交叉处排列分数

我是 Pandas 的新手,但我研究了 DataFrame.pivot_table(),但不幸的是找不到正确的方法。

解决方法

您正确使用 pivot_table 来解决此问题:

df = df.pivot_table(index='Name',values='Score',columns='Subject') \
    .reset_index() \
    .rename_axis(None,axis=1)
print(df)

输出:

  Name     A     B     C
0  Ali   NaN  96.0  97.0
1  Bob  94.0   NaN  95.0
2  Tom  91.0  92.0  93.0

Pivot 也适用于这种情况:

df = df.pivot(index='Name',axis=1)
,

这是解决方案

import pandas as pd
df= DATAFRAME [ as yours]
df1=df.pivot(index='Name',columns = 'Subject',values = 'Score').fillna('').round(decimals=0).astype(object)

输出

Python Pandas:按行透视 DataFrame 列

大佬总结

以上是大佬教程为你收集整理的Python Pandas:按行透视 DataFrame 列全部内容,希望文章能够帮你解决Python Pandas:按行透视 DataFrame 列所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: