2 回答
TA贡献1830条经验 获得超9个赞
创建一个MultiIndex和fillna
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'}})
TA贡献1810条经验 获得超4个赞
有时 df2 的列会更改其顺序。重新排列它们。
import pandas as pd
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':['D1','D1','D2','D2','D1','D2'], 'RE':['E1','E1','E1','E2','E1','E1'], 'DS':['S1','S2','S2','S3','S1','S2']})
df2 = df2[['DT', 'RE', 'DS']]
print(df1)
print(df2)
m_idx = pd.MultiIndex.from_arrays(df2.T.values)
m = pd.DataFrame(index=m_idx, columns=df1.columns)
m.update(df1)
print(m)
添加回答
举报