我有一个类似于下面的表,其中有一个汇总列,其中包含组和由冒号分隔的关联值,其中每个单独的组及其值由逗号分隔。 (组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
一个可能的解决方案:
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