Python 根据条件使用熊猫替换多列中的值
我有一个非常大的数据帧,我只想在一小部分连续的列中更改值。基本上,这些列中的值不是整数就是null。我只想在这些列中用“否”替换0和null,并用“是”替换其他所有内容 在R中,这基本上可以通过一个衬里完成:Python 根据条件使用熊猫替换多列中的值,python,pandas,Python,Pandas,我有一个非常大的数据帧,我只想在一小部分连续的列中更改值。基本上,这些列中的值不是整数就是null。我只想在这些列中用“否”替换0和null,并用“是”替换其他所有内容 在R中,这基本上可以通过一个衬里完成: df <- df %>% mutate_at(vars(MCI:BNP), ~factor(case_when(. > 0 ~ 'Yes', TRUE ~ 'No'))) 将为我获取所
df <- df %>%
mutate_at(vars(MCI:BNP), ~factor(case_when(. > 0 ~ 'Yes',
TRUE ~ 'No')))
将为我获取所需的列,但尝试调用loc无法使用多维键。我甚至尝试将列作为列表,而不是通过创建一个额外的变量来使用整数索引
binary_var = ['MCI','PVD','CVA','DEMENTIA','CPD','RD','PUD','MLD','DWOC','DWC','HoP','RND','MALIGNANCY','SLD','MST','HIV','AKF',
'ARMD','ASPHY','DEP','DWLK','DRUGA','DUOULC','FALL','FECAL','FLDELEX','FRAIL','GASTRICULC','GASTROULC','GLAU','HYPERKAL',
'HYPTEN','HYPOKAL','HYPOTHYR','HYPOXE','IMMUNOS','ISCHRT','LIPIDMETA','LOSWIGT','LOWBAK','MALNUT','OSTEO','PARKIN',
'PNEUM','RF','SEIZ','SD','TUML','UI','VI','MENTAL','FUROSEMIDE','METOPROLOL','ASPIRIN','OMEPRAZOLE','LISINOPRIL','DIGOXIN',
'ALDOSTERONE_ANTAGONIST','ACE_INHIBITOR','ANGIOTENSIN_RECEPTOR_BLOCKERS','BETA_BLOCKERSDIURETICHoP','BUN','CREATININE',
'SODIUM','POTASSIUM','HEMOGLOBIN','WBC_COUNT','CHLORIDE','ALBUMIN','TROPONIN','BNP']
df.loc[df[binary_var] == 0, binary_var]
但是它根本找不到这些列名的索引。我认为Pandas在将原来是整数的列转换为No/Yes时也有问题。我不需要在适当的地方这样做,我可能只是错过了一些简单的东西,熊猫已经在希望
在一个非常虚拟的代码描述中,我真正想要的就是这个
if(df.iloc[:,col1:col2] == 0 || df.iloc[:,col1:col2].isnull())
df ONLY in that subset of column = 'No'
else
df ONLY in that subset of column = 'Yes'
使用:
df.loc[:,'MCI':'BNP']=np.where(df.loc[:,'MCI':'BNP']>0,“是”,“否”)
if(df.iloc[:,col1:col2] == 0 || df.iloc[:,col1:col2].isnull())
df ONLY in that subset of column = 'No'
else
df ONLY in that subset of column = 'Yes'