1 回答

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超11個贊
您將收到這些警告消息,就像 的一部分的副本一樣。在此副本上設(shè)置值會引發(fā)警告,以確保您意識到這一點(diǎn) - 您的更改不會傳播回 。如果您使用 copy 方法顯式創(chuàng)建副本,這些警告將消失,例如:SettingWithCopyWarningdiagnoses_secdfdf
diagnoses_sec = df[['Diagnóstico 2', 'Diagnóstico 3']].copy()
關(guān)于執(zhí)行代碼所需的時間,以這種方式迭代pandas是低效的,你應(yīng)該努力使用矢量化操作,將函數(shù)或操作應(yīng)用于整個數(shù)組。DataFrame
您可以修改第一個示例以執(zhí)行此操作:
diagnoses_sec = df[['Diagnóstico 2', 'Diagnóstico 3', 'Diagnóstico 4', 'Diagnóstico 5', 'Diagnóstico 6',
'Diagnóstico 7', 'Diagnóstico 8', 'Diagnóstico 9', 'Diagnóstico 10', 'Diagnóstico 11', 'Diagnóstico 12',
'Diagnóstico 13', 'Diagnóstico 14', 'Diagnóstico 15', 'Diagnóstico 16', 'Diagnóstico 17', 'Diagnóstico 18',
'Diagnóstico 19', 'Diagnóstico 20']].copy()
diagnoses_sec.fillna("ZZZ", inplace=True)
diagnoses_sec = diagnoses_sec.apply(lambda x: x.str.slice(start=0, stop=3, step=1))
此處,應(yīng)用于整個,并將每個值替換為 。在第二個操作中,apply 將通過函數(shù)對 .fillnaDataFrameNA"ZZZ"lambdaSeriesdiagnoses_secDataFrame
您的第二種情況與此類似,但是由于您的函數(shù)未矢量化(它不對 or )進(jìn)行操作,并且正在應(yīng)用于您的每個單元格,因此您可以使用 applymap 對每個值執(zhí)行它:icdGroupDataFrameSeriesDataFrame
diagnoses_sec = diagnoses_sec.applymap(icdGroup)
添加回答
舉報