【问题标题】:How to pivot a dataframe in Pandas? [duplicate]如何在 Pandas 中旋转数据框? [复制]
【发布时间】:2015-04-04 21:41:45
【问题描述】:

我有一个 csv 格式的表格,看起来像这样。我想转置表格,以便指标名称列中的值是新列,

Indicator       Country         Year   Value    
1               Angola          2005    6
2               Angola          2005    13
3               Angola          2005    10
4               Angola          2005    11
5               Angola          2005    5
1               Angola          2006    3
2               Angola          2006    2
3               Angola          2006    7
4               Angola          2006    3
5               Angola          2006    6

我希望最终结果是这样的:

Country    Year     1     2     3     4     5
Angola     2005     6     13    10    11    5
Angola     2006     3     2     7     3     6

我尝试过使用 pandas 数据框,但没有多大成功。

print(df.pivot(columns = 'Country', 'Year', 'Indicator', values = 'Value'))

关于如何实现这一点的任何想法?

【问题讨论】:

  • @alfasin 他可能会向我们展示表格数据。无论如何,我 猜测 如果他使用的是 pandas 数据框,他必须已经将其解析为某个地方的表格。
  • 你的数据框目前是什么样子的?当你在上面调用pivot 时,它会做什么,你称之为“不太成功?”
  • 我在Q&A 中提供了几个详细的示例和替代方法,您或其他人可能会觉得有帮助。

标签: python pandas dataframe transpose


【解决方案1】:

你可以使用pivot_table:

pd.pivot_table(df, values = 'Value', index=['Country','Year'], columns = 'Indicator').reset_index()

这个输出:

 Indicator  Country     Year    1   2   3   4   5
 0          Angola      2005    6   13  10  11  5
 1          Angola      2006    3   2   7   3   6

【讨论】:

  • 查看输出的第一行(列名) - 为什么除了从指标列派生的列[右列]之外还有一个指标列[左列('Indicator')] 5 列(12345)]?
  • 这是索引。
  • 谢谢 - 我试过 something similar 但没有运气。
【解决方案2】:

这是一个猜测:它不是“.csv”文件,而是从“.csv”导入的 Pandas DataFrame。

要旋转该表,您需要在 Pandas “pivot”中添加三个参数。例如,如果 df 是你的数据框:

table = df.pivot(index='Country',columns='Year',values='Value')  
print (table)

这应该应该给出所需的输出。

【讨论】:

    猜你喜欢
    • 2019-02-08
    • 2022-12-04
    • 2020-08-31
    • 2011-12-20
    • 2021-07-22
    • 2022-11-15
    • 2019-08-25
    相关资源
    最近更新 更多