1 回答

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超7個(gè)贊
無(wú)需使用 for 循環(huán)。相反,您可以使用pandas
矢量化函數(shù)。
您可以與庫(kù)
fillna()
一起使用。本質(zhì)上,您正在用從描述列中提取的信息替換值。.str.extract()
pandas
NaN
您可以傳遞一個(gè)標(biāo)志,
flags=re.IGNORECASE
以在匹配時(shí)忽略大小寫。最后,我們必須使用
, expand=False
返回一個(gè)系列,因?yàn)榉祷匾粋€(gè)數(shù)據(jù)幀,這在處理數(shù)據(jù)幀而不是系列str.extract()
時(shí)會(huì)導(dǎo)致錯(cuò)誤。.fillna()
import pandas
import re
keyword = ['gmc', 'toyota', 'cadillac']
df['manufacturer'] = df['manufacturer'].fillna(
df['description'].str.extract('(gmc|toyota|cadillac)', flags=re.IGNORECASE, expand=False))
df['cylinders'] = df['cylinders'].fillna(
df['description'].str.extract('(\d+\s+cylinders?)', flags=re.IGNORECASE, expand=False))
df
Out[1]:
manufacturer cylinders description
0 toyota 5 cylinders toyota, gmc 10 years old.
1 gmc NaN gmc, Motor runs and drives good.
2 NaN 4 cylinders Motor old, in pieces. 4 cylinders
3 Cadillac 12 cylinders 2 owner 0 rust. Cadillac.
如果您需要輸出為小寫,您可以將str.lower()或添加str.casefold()到每列上面每行代碼的末尾。操作與符號(hào)和不同語(yǔ)言casefold()類似lower(),但更可靠。
添加回答
舉報(bào)