我有一個類似于從具有年度資料的檔案生成的資料集
d1 = pd.DataFrame({'category': ['A', 'B', 'C', 'D', 'E', 'F'],
'col': ['20%', '40%', '80%', '40%', '60%', '20%']})
此外,使用另一個每月的資料集生成與此類似的資料集
d2 = pd.DataFrame({'category': ['A', 'B', 'C', 'D', 'E', 'F'],
'20%': ['2.1', '4.1', '6.8', '5.9', '3.4', '5.4'],
'40%': ['1.9', '3.7', '6.1', '4.8', '4.1', '7.2'],
'60%': ['3.1', '4.9', '6.5', '7.1', '7.9', '5.1'],
'80%': ['2.5', '4.5', '5.6', '6.9', '8.4', '7.4']})
我希望得到這樣的輸出,它根據 d1 中的兩列從 d2 回傳元素的值
op = pd.DataFrame({'category': ['A', 'B', 'C', 'D', 'E', 'F'],
'col': ['20%', '40%', '80%', '40%', '60%', '20%'],
'min_value': ['2.1', '3.7', '5.6', '4.8', '7.9', '5.4']})
我不確定如何查找值
uj5u.com熱心網友回復:
用于DataFrame.meltunpivot 然后左加入DataFrame.merge:
df = d1.merge(d2.melt('category', value_name='min_value', var_name='col'), how='left')
print (df)
category col min_value
0 A 20% 2.1
1 B 40% 3.7
2 C 80% 5.6
3 D 40% 4.8
4 E 60% 7.9
5 F 20% 5.4
DataFrame.join與和替代DataFrame.stack:
df = d1.join(d2.set_index('category').stack().rename('min_value'), on=['category','col'])
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/474536.html
