【问题标题】:Groupby and transpose or unstack in Pandas在 Pandas 中分组和转置或取消堆叠
【发布时间】:2019-10-19 09:14:20
【问题描述】:

我有以下 Python pandas 数据框: EventName 的数量比该日期显示的要多。 每个都有 Race_Number = 'Race 1'、'Race 2' 等。 一段时间后,日期递增。 .

我正在尝试创建一个如下所示的数据框:

每场比赛都有不同数量的参赛者。 pandas 有没有办法做到这一点? 谢谢

【问题讨论】:

    标签: python-3.x pandas pandas-groupby transpose


    【解决方案1】:

    我假设输出将是另一个 DataFrame。

    import pandas as pd
    import numpy as np
    from nltk import flatten
    import copy
    
    df = pd.DataFrame({'EventName': ['sydney', 'sydney', 'sydney', 'sydney', 'sydney', 'sydney'],
                       'Date': ['2019-01.01', '2019-01.01', '2019-01.01', '2019-01.01', '2019-01.01', '2019-01.01'],
                       'Race_Number': ['Race1', 'Race1', 'Race1', 'Race2', 'Race2', 'Race3'],
                       'Number': [4, 7, 2, 9, 5, 10]
                       })
    print(df)
    
    dic={}
    for rows in df.itertuples():
        if rows.Race_Number in dic:
            dic[rows.Race_Number] = flatten([dic[rows.Race_Number], rows.Number])
        else:
            dic[rows.Race_Number] = rows.Number
    
    copy_dic = copy.deepcopy(dic)
    seq = np.arange(0,len(dic.keys()))
    for key, n_key in zip(copy_dic, seq):
        dic[n_key] = dic.pop(key)
    
    df = pd.DataFrame([dic])
    
    print(df)
    

    【讨论】:

    • 嗨,BC 史密斯。非常感谢您的惊人努力。当我运行您的代码时,我发现它将下一个 EventName 'race 1' 数字附加到前一个。我已经编辑了这个问题以反映有很多“Race 1s”等事实。也许我应该在每个 EventName 之后拆分数据框并应用您的代码?你有什么建议?
    猜你喜欢
    • 2023-01-11
    • 1970-01-01
    • 1970-01-01
    • 2016-01-08
    • 2021-07-02
    • 2022-01-03
    • 1970-01-01
    • 2017-05-28
    • 2019-01-18
    相关资源
    最近更新 更多