【问题标题】:Pandas DataFrame - splitting a column into 2 columns, based on another column [duplicate]Pandas DataFrame - 根据另一列将一列分成两列[重复]
【发布时间】:2019-10-10 15:51:40
【问题描述】:

使用 pandas 数据框与这个苦苦挣扎,我的数据如下:

Animal     Nationality   Type     Value
Leopard    India         Age      4.0
Elephant   India         Age      12.0
Leopard    India         Speed    30.0
Elephant   India         Speed    3.0
Leopard    China         Age      5.0
Leopard    China         Speed    27.0

我想有效地将​​数据合并到一个数据框中,如下所示:

Animal     Nationality    Age      Speed
Leopard    India          4.0      30.0
Elephant   India          12.0     3.0 
Leopard    China          5.0      27.0

我查找了半相似的问题,但没有任何乐趣,我认为由于改变数据框大小的性质,任何帮助将不胜感激。

提前致谢。

【问题讨论】:

    标签: python pandas dataframe split multi-index


    【解决方案1】:

    使用DataFrame.pivot_tableDataFrame.pivot

    new_df=df.pivot_table(index=['Animal','Nationality'],columns='Type',values='Value')
    print(new_df)
    
    
    Type                   Age  Speed
    Animal   Nationality             
    Elephant India        12.0    3.0
    Leopard  China         5.0   27.0
             India         4.0   30.0
    

    new_df.reset_index(inplace=True)
    print(new_df)
    
    
    Type    Animal Nationality   Age  Speed
    0     Elephant       India  12.0    3.0
    1      Leopard       China   5.0   27.0
    2      Leopard       India   4.0   30.0
    

    【讨论】:

    • 嗨,谢谢你的回复,我也意识到我需要包含多索引,这是一个问题,并且已经更新了问题,你能看看这个并更新你的回复?非常感谢。
    • 我更新了解决方案。正确请采纳
    • 不幸的是,这并没有为我解决。我已经尝试使用 pivot_table 并得到错误:“没有要聚合的数字类型” - 我猜是因为我的值是字符串。我还尝试在 python 中使用 pivot 并得到“传递的值的长度是 6,索引意味着 2”
    • new_df=df.pivot_table(index=['Animal','Nationality'],columns='Type',values='Value', aggfunc=''.join)
    猜你喜欢
    • 2012-10-15
    • 2022-11-19
    • 1970-01-01
    • 1970-01-01
    • 2017-06-08
    • 1970-01-01
    • 2020-09-26
    • 2014-07-26
    • 2020-12-08
    相关资源
    最近更新 更多