使用 Pandas 将数据框列通过多个分隔符分隔成新列

问题描述 投票:0回答:1

我有一个类似于下面的表,其中有一个汇总列,其中包含组和由冒号分隔的关联值,其中每个单独的组及其值由逗号分隔。 (组1:值1,组2:值2...)。

  Area       DTTM ID ID2                        Summary
0    M   1/1/1960  A   A                         1:2980
1    M   3/8/2021  A   B                         1:2980
2    M  5/12/2024  A   B                         1:8732
3    M   1/1/1960  A   C                         1:8732
4    H   3/8/2021  B   C                 1:53174,9:2332
5    H  5/12/2024  B   D                  1:22017,9:118
6    H   1/1/1960  B   A  1:4239, 6:184, 9:1243, 14:482

我试图将摘要列分成每个组的单独列(冒号之前的数字),并在每行的每一列中包含值(冒号之后的数字)。我该怎么办?示例输出如下所示:

  Area       DTTM ID ID2   Bin1  Bin6  Bin9  Bin14
0    M   1/1/1960  A   A   2980     0     0      0
1    M   3/8/2021  A   B   2980     0     0      0
2    M  5/12/2024  A   B   8732     0     0      0
3    M   1/1/1960  A   C   8732     0     0      0
4    H   3/8/2021  B   C  53174     0  2332      0
5    H  5/12/2024  B   D  22017     0   118      0
6    H   1/1/1960  B   A   4239   184  1243    482
python pandas dataframe split grouping
1个回答
0
投票

一个可能的解决方案:

summary = (
    df.pop("Summary")
    .str.split(r",\s*", regex=True)
    .explode()
    .str.split(":", expand=True)
)
summary[0] = "Bin" + summary[0]
summary = summary.pivot(columns=0, values=1)

out = df.join(summary)
  Area       DTTM ID ID2   Bin1 Bin14 Bin6  Bin9
0    M   1/1/1960  A   A   2980   NaN  NaN   NaN
1    M   3/8/2021  A   B   2980   NaN  NaN   NaN
2    M  5/12/2024  A   B   8732   NaN  NaN   NaN
3    M   1/1/1960  A   C   8732   NaN  NaN   NaN
4    H   3/8/2021  B   C  53174   NaN  NaN  2332
5    H  5/12/2024  B   D  22017   NaN  NaN   118
6    H   1/1/1960  B   A   4239   482  184  1243
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.