从列中提取Python数据帧字符串并将其分配给所需的列

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

我有一个带有字段OverallRatio的数据框,其他六个比率(比方说A、B、C、D、E、F)必须基于此计算,查看按 ; 划分的索引。例如,A、B、C、D、E、F 的计算应基于: enter image description here 总体比率 A B C D E F 1:0.25; 3:0.33; 5:0.5 0.25 0 0.33 0 0.5 0 5:0.25; 6: 0.75 0 0 0 0 0 0.75 1:0.5; 6:0.33 0.5 0 0 0 0 0.33 2:0.25; 4:0.5 0 0.25 0 0.5 0 0

python string dictionary
1个回答
0
投票

尝试:

x = df["OverallRatio"].str.extractall(r"(\S+):([^;]+)").droplevel(1).reset_index()
x = (
    x.pivot(index="index", columns=0, values=1)
    .fillna(0)
    .rename_axis(columns=None, index=None)
)
x.columns = [chr(ord("A") + (int(c) - 1)) for c in x.columns]
print(pd.concat([df, x], axis=1))

打印:

            OverallRatio     A     B     C    D     E      F
0  1:0.25; 3:0.33; 5:0.5  0.25     0  0.33    0   0.5      0
1        5:0.25; 6: 0.75     0     0     0    0  0.25   0.75
2          1:0.5; 6:0.33   0.5     0     0    0     0   0.33
3          2:0.25; 4:0.5     0  0.25     0  0.5     0      0
© www.soinside.com 2019 - 2024. All rights reserved.