【问题标题】:Transpose csv structure using python pandas使用 python pandas 转置 csv 结构
【发布时间】:2013-04-08 14:27:14
【问题描述】:

我有以下 csv 结构:

'国家' '1960' '1961' '1962' 澳大利亚 450 567 723 新西兰 125 320 工业 350 375 395 SL 帕克 100 115 218

如何使用 Python Pandas 将上述结构转换(转置)为以下结构?

'国家' '年份' '价值' 澳大利亚 1960 450 澳大利亚 1961 567 澳大利亚 1962 723 新西兰 1960 新西兰 1961 125 ...

我尝试使用 pivot 是徒劳的。

【问题讨论】:

    标签: csv python-2.7 pandas


    【解决方案1】:
    In [19]: df
    Out[19]:
    year     1960  1961  1962
    Country
    AUS       450   567   723
    NZ        NaN   125   320
    IND       350   375   395
    SL        NaN   NaN   NaN
    PAK       100   115   218
    
    In [20]: df.stack().reset_index()
    Out[20]:
       Country  year    0
    0      AUS  1960  450
    1      AUS  1961  567
    2      AUS  1962  723
    3       NZ  1961  125
    4       NZ  1962  320
    5      IND  1960  350
    6      IND  1961  375
    7      IND  1962  395
    8      PAK  1960  100
    9      PAK  1961  115
    10     PAK  1962  218
    

    显然 NaN 被丢弃了。

    【讨论】:

    • 试过了。但我明白了; ,level_0,level_1,0 0,0,Country,AUS 1,0,1960,450.0 2,0,1961,567.0 3,0,1962,723.0 4,1,Country,NZ 5,1,1961,125.0 6, 1,1962,320.0 7,2,国家,IND 8,2,1960,350.0
    • 根据您的回答,我尝试了 df.transpose().stack().reset_index() 并且已经接近我想要的地方
    • 我的示例中的输出与您想要得到的完全匹配(NaN 除外)。如果您没有得到相同的结果,这仅意味着您从 csv 文件中提取数据的方式不同,并且您的起始帧与我的不同。
    • 哦,是的。我应该做这个 'data.set_index('Country').stack().reset_index()' 而且我必须做一个 'data.set_index('Country').stack(dropna=False).reset_index( )' 包括 nans。谢谢!!!!
    猜你喜欢
    • 1970-01-01
    • 2019-07-27
    • 2019-12-20
    • 2017-09-12
    • 2016-10-03
    • 2019-03-15
    • 2016-02-12
    • 2021-12-26
    • 2019-07-05
    相关资源
    最近更新 更多