gpt4 book ai didi

python - 通过匹配另一个数据帧的多级标题来填充数据帧的列

转载 作者:行者123 更新时间:2023-12-01 08:35:55 24 4
gpt4 key购买 nike

我有多级数据框1:

Cstep                      step 0    step 1    step 2    step 3    step 4
D1 E1 S1 0.372621 0.211435 0.162299 0.149502 0.104143
S2 0.104714 0.106229 0.119725 0.172926 0.496405
S3 0.000000 0.270593 0.540627 0.188780 0.000000
S4 0.144627 0.065209 0.060130 0.272958 0.457076
Unknown 0.491222 0.188258 0.158279 0.162242 0.000000
E2 S1 0.085831 0.328942 0.233738 0.242986 0.108503
S2 0.336600 0.189705 0.314877 0.158818 0.000000
S3 0.000000 0.448532 0.551468 0.000000 0.000000
S4 0.000000 0.000000 0.248368 0.751632 0.000000
Unknown 0.235332 0.371369 0.171224 0.222074 0.000000
D2 E1 S1 0.030488 0.272635 0.190137 0.153442 0.353298
S2 0.000000 0.251659 0.309414 0.438927 0.000000
S3 0.000000 0.381712 0.351985 0.266302 0.000000
S4 0.827896 0.000000 0.172104 0.000000 0.000000
Unknown 0.000000 0.189613 0.611961 0.198426 0.000000
E2 S1 0.061281 0.223804 0.171979 0.271795 0.271140
S2 0.124464 0.252529 0.388104 0.234903 0.000000
S3 0.000000 0.045514 0.125909 0.190519 0.638058
S4 0.000000 0.034438 0.000000 0.000000 0.965562
Unknown 0.000000 0.239879 0.258064 0.502057 0.000000

我有另一个数据框2:

         DT       RE       DS    
0 D1 E1 S1
1 D1 E1 S2
2 D2 E1 S2
3 D2 E2 S3

我想通过匹配数据帧1中的多级 header 值来填充数据帧2。像这样:

         DT       RE       DS    step 0    step 1    step 2    step 3    step 4
0 D1 E1 S1 0.372621 0.211435 0.162299 0.149502 0.104143
1 D1 E1 S2 0.104714 0.106229 0.119725 0.172926 0.496405
2 D2 E1 S2 0.000000 0.251659 0.309414 0.438927 0.000000
3 D2 E2 S3 0.000000 0.045514 0.125909 0.190519 0.638058

最佳答案

创建一个MultiIndexfillna

m_idx = pd.MultiIndex.from_arrays(df2.T.values)
m = pd.DataFrame(index=m_idx, columns=df1.columns)

m.fillna(df1)

            step 0    step 1    step 2    step 3    step 4
D1 E1 S1 0.372621 0.211435 0.162299 0.149502 0.104143
S2 0.104714 0.106229 0.119725 0.172926 0.496405
D2 E1 S2 0 0.251659 0.309414 0.438927 0
E2 S3 0 0.045514 0.125909 0.190519 0.638058
<小时/>

如果其他人想插话,这里有一个重新创建 DataFrame 的简单方法:

df1 = pd.DataFrame({'step 0': {('D1', 'E1', 'S1'): 0.372621, ('D1', 'E1', 'S2'): 0.10471400000000002, ('D1', 'E1', 'S3'): 0.0, ('D1', 'E1', 'S4'): 0.144627, ('D1', 'E1', 'Unknown'): 0.49122200000000005, ('D1', 'E2', 'S1'): 0.08583099999999999, ('D1', 'E2', 'S2'): 0.3366, ('D1', 'E2', 'S3'): 0.0, ('D1', 'E2', 'S4'): 0.0, ('D1', 'E2', 'Unknown'): 0.235332, ('D2', 'E1', 'S1'): 0.030488, ('D2', 'E1', 'S2'): 0.0, ('D2', 'E1', 'S3'): 0.0, ('D2', 'E1', 'S4'): 0.827896, ('D2', 'E1', 'Unknown'): 0.0, ('D2', 'E2', 'S1'): 0.061280999999999995, ('D2', 'E2', 'S2'): 0.124464, ('D2', 'E2', 'S3'): 0.0, ('D2', 'E2', 'S4'): 0.0, ('D2', 'E2', 'Unknown'): 0.0}, 'step 1': {('D1', 'E1', 'S1'): 0.21143499999999998, ('D1', 'E1', 'S2'): 0.10622899999999999, ('D1', 'E1', 'S3'): 0.270593, ('D1', 'E1', 'S4'): 0.065209, ('D1', 'E1', 'Unknown'): 0.18825799999999998, ('D1', 'E2', 'S1'): 0.328942, ('D1', 'E2', 'S2'): 0.18970499999999998, ('D1', 'E2', 'S3'): 0.448532, ('D1', 'E2', 'S4'): 0.0, ('D1', 'E2', 'Unknown'): 0.371369, ('D2', 'E1', 'S1'): 0.272635, ('D2', 'E1', 'S2'): 0.251659, ('D2', 'E1', 'S3'): 0.381712, ('D2', 'E1', 'S4'): 0.0, ('D2', 'E1', 'Unknown'): 0.189613, ('D2', 'E2', 'S1'): 0.223804, ('D2', 'E2', 'S2'): 0.252529, ('D2', 'E2', 'S3'): 0.045514, ('D2', 'E2', 'S4'): 0.034437999999999996, ('D2', 'E2', 'Unknown'): 0.239879}, 'step 2': {('D1', 'E1', 'S1'): 0.162299, ('D1', 'E1', 'S2'): 0.119725, ('D1', 'E1', 'S3'): 0.5406270000000001, ('D1', 'E1', 'S4'): 0.060129999999999996, ('D1', 'E1', 'Unknown'): 0.158279, ('D1', 'E2', 'S1'): 0.233738, ('D1', 'E2', 'S2'): 0.314877, ('D1', 'E2', 'S3'): 0.5514680000000001, ('D1', 'E2', 'S4'): 0.24836799999999998, ('D1', 'E2', 'Unknown'): 0.171224, ('D2', 'E1', 'S1'): 0.190137, ('D2', 'E1', 'S2'): 0.30941399999999997, ('D2', 'E1', 'S3'): 0.351985, ('D2', 'E1', 'S4'): 0.172104, ('D2', 'E1', 'Unknown'): 0.611961, ('D2', 'E2', 'S1'): 0.171979, ('D2', 'E2', 'S2'): 0.388104, ('D2', 'E2', 'S3'): 0.125909, ('D2', 'E2', 'S4'): 0.0, ('D2', 'E2', 'Unknown'): 0.25806399999999996}, 'step 3': {('D1', 'E1', 'S1'): 0.149502, ('D1', 'E1', 'S2'): 0.172926, ('D1', 'E1', 'S3'): 0.18878, ('D1', 'E1', 'S4'): 0.272958, ('D1', 'E1', 'Unknown'): 0.162242, ('D1', 'E2', 'S1'): 0.242986, ('D1', 'E2', 'S2'): 0.15881800000000001, ('D1', 'E2', 'S3'): 0.0, ('D1', 'E2', 'S4'): 0.751632, ('D1', 'E2', 'Unknown'): 0.22207399999999997, ('D2', 'E1', 'S1'): 0.153442, ('D2', 'E1', 'S2'): 0.43892700000000007, ('D2', 'E1', 'S3'): 0.266302, ('D2', 'E1', 'S4'): 0.0, ('D2', 'E1', 'Unknown'): 0.198426, ('D2', 'E2', 'S1'): 0.271795, ('D2', 'E2', 'S2'): 0.23490300000000003, ('D2', 'E2', 'S3'): 0.190519, ('D2', 'E2', 'S4'): 0.0, ('D2', 'E2', 'Unknown'): 0.502057}, 'step 4': {('D1', 'E1', 'S1'): 0.104143, ('D1', 'E1', 'S2'): 0.49640500000000004, ('D1', 'E1', 'S3'): 0.0, ('D1', 'E1', 'S4'): 0.45707600000000004, ('D1', 'E1', 'Unknown'): 0.0, ('D1', 'E2', 'S1'): 0.108503, ('D1', 'E2', 'S2'): 0.0, ('D1', 'E2', 'S3'): 0.0, ('D1', 'E2', 'S4'): 0.0, ('D1', 'E2', 'Unknown'): 0.0, ('D2', 'E1', 'S1'): 0.353298, ('D2', 'E1', 'S2'): 0.0, ('D2', 'E1', 'S3'): 0.0, ('D2', 'E1', 'S4'): 0.0, ('D2', 'E1', 'Unknown'): 0.0, ('D2', 'E2', 'S1'): 0.27114, ('D2', 'E2', 'S2'): 0.0, ('D2', 'E2', 'S3'): 0.638058, ('D2', 'E2', 'S4'): 0.965562, ('D2', 'E2', 'Unknown'): 0.0}})
df2 = pd.DataFrame({'DT': {0: 'D1', 1: 'D1', 2: 'D2', 3: 'D2'}, 'RE': {0: 'E1', 1: 'E1', 2: 'E1', 3: 'E2'}, 'DS': {0: 'S1', 1: 'S2', 2: 'S2', 3: 'S3'}})

关于python - 通过匹配另一个数据帧的多级标题来填充数据帧的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53729698/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com