第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么我的 pandas 代碼會引發(fā)分配警告并運(yùn)行緩慢?

為什么我的 pandas 代碼會引發(fā)分配警告并運(yùn)行緩慢?

慕姐4208626 2022-09-06 18:08:41
我正在做一個項(xiàng)目,我必須處理很多診斷。無論目的是什么,在編碼方面,我認(rèn)為下面的代碼是正確的,但是它需要花費(fèi)很多時間(?1小時),并且它總是向我顯示警告。有什么是我做對了嗎?提前感謝您# The first 3 values are the only that mattersdiagnoses_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']]for i in range(0, diagnoses_sec.shape[1]):    diagnoses_sec.iloc[:,i].fillna("ZZZ", inplace = True)    diagnoses_sec.iloc[:,i] = diagnoses_sec.iloc[:,i].str.slice(start=0, stop=3, step=1)在這一部分中,有一個警告,但我不明白為什么:C:\Users\Asus\Anaconda3\lib\site-packages\pandas\core\indexing.py:630: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame.Try using .loc[row_indexer,col_indexer] = value insteadSee the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy  self.obj[item_labels[indexer[info_axis]]] = value代碼的第二部分是:from bisect import bisect_leftdiag_icd10_ranges = ["B99","D49","D89","E89","F99","G99","H59","H95",          "I99","J99","K95", "L99", "M99", "N99","O9A","P96","Q99",          "R99","T88","Y99","Z99","ZZZ"]
查看完整描述

1 回答

?
Qyouu

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)


查看完整回答
反對 回復(fù) 2022-09-06
  • 1 回答
  • 0 關(guān)注
  • 105 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號