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

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

是否可以在 Pandas 的 loc 中使用 loc 來替換值?

是否可以在 Pandas 的 loc 中使用 loc 來替換值?

素胚勾勒不出你 2022-10-11 16:11:20
讓我先勾勒一下我要解決的問題。我正在嘗試根據(jù)包含“-1”的行中的其他兩個值,將值“-1”替換為同一列中的另一個值。為了更清楚,這里有一個例子。在下面的數(shù)據(jù)框中,“所有者”列中有兩個缺失值。我想要的是用“所有者”列中的值替換每個“-1”值,該值具有相同的“價格”值,并且是第一個在“時間”中比“-1”值更早出現(xiàn)的值。所以,在這個例子中,第-13 行中找到了第一個值。對應(yīng)的 'price' 和 'time' 是cheapand 2011-01-01 13:30:00。所以現(xiàn)在,我想-1用車主的名字代替,有cheap車,2011-01-01 13:30:00. 在這種情況下,這將是第 1 行中帶有 owner name 的那個Jane。-1對于任何以下值(例如寶馬),這也應(yīng)該自動完成。   brand   price time                 owner0   Honda  cheap 2008-01-01 13:30:00  Marc1  Toyota  cheap 2009-01-01 13:30:00  Jane2    Ford   alot 2010-01-01 13:30:00  Phil3    Audi  cheap 2011-01-01 13:30:00    -14   Volvo  cheap 2012-01-01 13:30:00  Jane5     Bmw   alot 2013-01-01 13:30:00    -1我想解決這個問題的方法是,先定位到-1,然后保存對應(yīng)的價格和時間,然后及時定位到第一個對應(yīng)的價格,替換所有者值。我想通過以下方式使用 Pandas Loc 方法(我也包含了制作數(shù)據(jù)框的代碼)。import pandas as pdfrom datetime import datetimecars = {'brand': ['Honda','Toyota','Ford','Audi','Volvo','Bmw'],        'price': ['cheap','cheap','alot','cheap','cheap','alot'],        'time': [datetime.strptime('1/1/2008 1:30 PM', '%m/%d/%Y %I:%M %p'),datetime.strptime('1/1/2009 1:30 PM', '%m/%d/%Y %I:%M %p'),datetime.strptime('1/1/2010 1:30 PM', '%m/%d/%Y %I:%M %p'),datetime.strptime('1/1/2011 1:30 PM', '%m/%d/%Y %I:%M %p'),                 datetime.strptime('1/1/2012 1:30 PM', '%m/%d/%Y %I:%M %p'),datetime.strptime('1/1/2013 1:30 PM', '%m/%d/%Y %I:%M %p')],        'owner': ['Marc', 'Jane','Phil','-1','Jane','-1']}df = pd.DataFrame(cars, columns = ['brand', 'price','time','owner'])P_T = df.loc[df.owner == '-1',['price','time']df.loc[df.owner == '-1', 'owner'] = df.loc[(df.price == P_T.price)&(df.time < P_T.time), 'owner']正如您在最后一行中看到的,這本質(zhì)上是 loc 中的 loc,而等式右側(cè)的條件均基于 P_T loc。但是,問題來了,因?yàn)槲也粩嗍盏酱隋e誤: ValueError: Can only compare identically-labeled Series objects 我認(rèn)為我做錯了什么,并且可能做的事情效率不高......所以我真的很感謝在這件事上提供一些幫助。
查看完整描述

1 回答

?
明月笑刀無情

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超4個贊

我認(rèn)為您對此過于復(fù)雜-本質(zhì)上您需要做的是-1用按價格列分組的最后一個對應(yīng)值填充值?如果是這樣,前向填充就可以了ffill


import numpy as np

s = df.replace('-1',np.nan).sort_values('time').groupby(['price'])['owner'].ffill()


df['owner'] = df.index.map(s)




print(df)



    brand  price                time owner

0   Honda  cheap 2008-01-01 13:30:00  Marc

1  Toyota  cheap 2009-01-01 13:30:00  Jane

2    Ford   alot 2010-01-01 13:30:00  Phil

3    Audi  cheap 2011-01-01 13:30:00  Jane

4   Volvo  cheap 2012-01-01 13:30:00  Jane

5     Bmw   alot 2013-01-01 13:30:00  Phil


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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