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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

通過(guò) DataFrame 中的 ForLoop 賦值

通過(guò) DataFrame 中的 ForLoop 賦值

四季花海 2023-10-06 18:50:04
我有一個(gè)這樣的數(shù)據(jù)庫(kù):manufacturer  cylinders    description0   toyota   5 cylinders   toyota, gmc 10 years old.1   NaN          NaN       gmc, Motor runs and drives good.2   NaN          NaN       Motor old, in pieces. 4 cylinders3   NaN     12 cylinders   2 owner 0 rust. Cadillac.還有這組關(guān)鍵詞:manufacturer = ['gmc', 'toyota', 'cadillac']cylinders = ['12 cylinders', '4 cylinders', '5 cylinders']我想創(chuàng)建一個(gè)程序來(lái)讀取描述并根據(jù)所需的關(guān)鍵字向每列添加正確的信息。理想情況下,它看起來(lái)像這樣:    manufacturer  cylinders   description0   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 cylinders3   cadillac   12 cylinders   2 owner 0 rust. Cadillac.一直在嘗試一切,但似乎沒(méi)有任何效果。這是我為了將單詞添加到一列而嘗試的方法,但我需要將其更改為多個(gè)列,并且該程序會(huì)更改值,即使它不是 NaN(fe 將“toyota”更改為“gmc”),這是我不想要的。import rekeyword = ['gmc', 'toyota', 'cadillac']bag_of_words = []for i, description in enumerate(test3['description']):bag_of_words = re.findall(r"""[A-Za-z\-]+""", test3["description"][i])for word in bag_of_words:     if word.lower() in keyword:            test3.loc[i, 'manufacturer'] = word.lower()我知道如何解決這個(gè)問(wèn)題嗎?謝謝。
查看完整描述

1 回答

?
元芳怎么了

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超7個(gè)贊

無(wú)需使用 for 循環(huán)。相反,您可以使用pandas矢量化函數(shù)。

  1. 您可以與庫(kù)fillna()一起使用。本質(zhì)上,您正在用從描述列中提取的信息替換值。.str.extract()pandasNaN

  2. 您可以傳遞一個(gè)標(biāo)志,flags=re.IGNORECASE以在匹配時(shí)忽略大小寫。

  3. 最后,我們必須使用, 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(),但更可靠。


查看完整回答
反對(duì) 回復(fù) 2023-10-06
  • 1 回答
  • 0 關(guān)注
  • 125 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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