【发布时间】:2021-12-08 03:53:50
【问题描述】:
我有以下字典
dict_map = {
'Anti' : {'Drug':('A','B','C')},
'Undef': {'Drug':'D','Name':'Type X'},
'Vit ' : {'Name': 'Vitamin C'},
'Placebo Effect' : {'Name':'Placebo', 'Batch':'XYZ'},
}
还有数据框
df = pd.DataFrame(
{
'ID': ['AB01', 'AB02', 'AB03', 'AB04', 'AB05','AB06'],
'Drug': ["A","B","A",np.nan,"D","D"],
'Name': ['Placebo', 'Vitamin C', np.nan, 'Placebo', '', 'Type X'],
'Batch' : ['ABC',np.nan,np.nan,'XYZ',np.nan,np.nan],
}
我必须创建一个新列,它将使用列表中指定的列的数据来填充
cols_to_map = ["Drug", "Name", "Batch"]
最终结果应该是这样的
请注意,尽管“维生素 C”和“安慰剂”是“名称”列,但“结果”列的前 3 行填充了“反”,这是因为“反”在字典中排在第一位。如何使用 python 实现这一点? dict_map 无论如何都可以重组以满足这个结果。我不是 python 专业人士,非常感谢您的帮助。
【问题讨论】:
标签: python pandas dataframe numpy data-manipulation