Skip to main content
 首页 » 编程设计

python之在字典中检查多个 if 条件的优雅方法

2025年05月04日11dyllove98

我有一个如下所示的数据框字典

dataFramesDict[sheet_name] = pd.DataFrame({'Date':['2007-05-30','2107-11-30','2207-05-20','2307-05-20'],'Value': [2.4,2.5,2.6,2.7],'Test': ['Height','Weight','SBP','DBP']}) 

我想做的是创建一个名为 Unit 的新列,并根据 Test 列添加值

这是我尝试过的方法,但这看起来并不优雅或高效。

if dataFramesDict[sheet_name]['Test'] == 'Height': 
    dataFramesDict[sheet_name]['unit'] == 'm' 
if dataFramesDict[sheet_name]['Test'] == 'Weight': 
    dataFramesDict[sheet_name]['unit'] == 'kg' 
if dataFramesDict[sheet_name]['Test'] == 'SBP': 
    dataFramesDict[sheet_name]['unit'] == 'millimeter' 
if dataFramesDict[sheet_name]['Test'] == 'DBP': 
    dataFramesDict[sheet_name]['unit'] == 'millimeter' 

请注意,sheet_name 是 Excel 工作表的一部分。我总共有 10 多张纸,我想阅读每张纸并检查每张纸中的测试值,并根据 Test 列

分配单位值

我希望我的输出如下所示

请您参考如下方法:

将map与dict一起使用

例如:

d = {'Height':"m",'Weight': "kg",'SBP':'mm','DBP':'mm'} 
dataFramesDict = pd.DataFrame({'Date':['2007-05-30','2107-11-30','2207-05-20','2307-05-20'],'Value': [2.4,2.5,2.6,2.7],'Test': ['Height','Weight','SBP','DBP']}) 
dataFramesDict["Unit"] = dataFramesDict["Test"].map(d) 
print(dataFramesDict) 

输出:

         Date    Test  Value Unit 
0  2007-05-30  Height    2.4    m 
1  2107-11-30  Weight    2.5   kg 
2  2207-05-20     SBP    2.6   mm 
3  2307-05-20     DBP    2.7   mm