我有一个带有字段OverallRatio的数据框,其他六个比率(比方说A、B、C、D、E、F)必须基于此计算,查看按 ; 划分的索引。例如,A、B、C、D、E、F 的计算应基于: 总体比率 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
尝试:
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