【问题标题】:How to concatenate lists in Dataframe after grouping [duplicate]分组后如何在Dataframe中连接列表[重复]
【发布时间】:2021-10-29 17:29:13
【问题描述】:

对数据框进行分组后,结果是我在数据框的每一行中都有一个列表。

                                                 Id
0   [GSTE00057]
1   [LOKH18675]
2   [LWWSD61, PTZW6, VCVCD064, AFER53423]
3   [KJHZ64534]
4   [GDHSGD88888]
5   [FSDAE00003]
6   [IHUGZF051, ZGGTHZ0052, PRRDSE00053, PUITZRT00087]

我怎样才能列出一份清单?

我试过了:

.apply(lambda x: np.concatenate(x.values).tolist()).reset_index()

但我明白了:

'numpy.ndarray' object has no attribute 'values'

想要的输出:

[GSTE00057, LOKH18675,LWWSD61, PTZW6, VCVCD064, AFER53423, KJHZ64534.........]

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    使用 itertools.chain:

    import pandas as pd
    from itertools import chain
    
    # toy data
    data = [["GSTE00057"],
            ["LOKH18675"],
            ["LWWSD61", "PTZW6", "VCVCD064", "AFER53423"],
            ["KJHZ64534"],
            ["GDHSGD88888"],
            ["FSDAE00003"],
            ["IHUGZF051", "ZGGTHZ0052", "PRRDSE00053", "PUITZRT00087"]]
    df = pd.DataFrame(data=[[e] for e in data], columns=["Id"])
    
    # concatenate
    res = list(chain.from_iterable(df["Id"]))
    print(res)
    

    输出

    ['GSTE00057', 'LOKH18675', 'LWWSD61', 'PTZW6', 'VCVCD064', 'AFER53423', 'KJHZ64534', 'GDHSGD88888', 'FSDAE00003', 'IHUGZF051', 'ZGGTHZ0052', 'PRRDSE00053', 'PUITZRT00087']
    

    或者作为替代:

    res = np.concatenate(df["Id"]).tolist()
    

    【讨论】:

      【解决方案2】:

      使用 pandas 方法:pd.Series.explodepd.Series.tolist

      df["ID"].explode().tolist()
      

      输出:

      ['GSTE00057', 'LOKH18675', 'LWWSD61', 'PTZW6', 'VCVCD064', 'AFER53423', 'KJHZ64534', 'GDHSGD88888', 'FSDAE00003', 'IHUGZF051', 'ZGGTHZ0052', 'PRRDSE00053', 'PUITZRT00087']
      

      【讨论】:

        猜你喜欢
        • 2018-10-18
        • 2018-06-26
        • 1970-01-01
        • 1970-01-01
        • 2021-10-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多