亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

Python 3 中的條件查找

Python 3 中的條件查找

慕妹3146593 2021-09-25 09:47:33
請幫忙。有數據框:ArtNo   Description     PriceAAA     Lore Ipsum      10BBB     Lore Ipsum      9CCC     Lore Ipsum      8DDD     AAA Lore Ipsum  0EEE     BBB Lore Ipsum  0FFF     CCC Lore Ipsum  0GGG     ZZZ Lore Ipsum  0HHH     AAA Lore Ipsum  0我需要在 ArtNo 列中的文章的描述列中添加一個乘以價格而不是零的列。如果沒有匹配(ArtNo 列和 Description 中的第一個單詞之間的空間),則將同一行中 Price 列中的相同數字應用于“乘法列”:ArtNo   Description     Price   Price (multiplied) ???AAA     Lore Ipsum      10      10  BBB     Lore Ipsum      9       9   CCC     Lore Ipsum      8       8   DDD     AAA Lore Ipsum  0       10  EEE     BBB Lore Ipsum  0       9   FFF     CCC Lore Ipsum  0       8GGG     ZZZ Lore Ipsum  0       0HHH     AAA Lore Ipsum  0       10在excel中它是這樣工作的:IF (Price != 0; Price multiplied = Price;    IF(ISERROR(VLOOKUP(MID(Description;1;FIND(        ' ';Description;1));TABLE;3;0));Price multiplied = Price;    ESLE: Price multiplied = VLOOKUP(MID(Description;1;FIND(        ' ';Description;1));TABLE;3;0)    ))提前致謝。
查看完整描述

2 回答

?
桃花長相依

TA貢獻1860條經驗 獲得超8個贊

您可以構建一個系列映射并將其應用于Description.


zeros = df['Price'].eq(0)

art_price_map = df[~zeros].set_index('ArtNo')['Price']

first_word = df['Description'].str.split(n=1).str[0]


df['Price (multiplied)'] = df['Price'].mask(zeros, first_word.map(art_price_map))\

                                      .fillna(0).astype(int)


print(df)


  ArtNo     Description  Price  Price (multiplied)

0   AAA      Lore Ipsum     10                  10

1   BBB      Lore Ipsum      9                   9

2   CCC      Lore Ipsum      8                   8

3   DDD  AAA Lore Ipsum      0                  10

4   EEE  BBB Lore Ipsum      0                   9

5   FFF  CCC Lore Ipsum      0                   8

6   GGG  ZZZ Lore Ipsum      0                   0


查看完整回答
反對 回復 2021-09-25
?
慕哥9229398

TA貢獻1877條經驗 獲得超6個贊

你可以這樣做pd.merge:


 #create new dataframe with ArtNo created from part of the Description

 df2 = df.copy()[['Description']]

 df2.columns = ['ArtNo']

 df2['ArtNo'] = df2['ArtNo'].str.split(n=1).str[0]


 #merge price from the first dataframe

 df2 = pd.merge(df2, df[['ArtNo', 'Price']], how='left', on='ArtNo')


 #create a new column 'Price (multiplied)' and fill NANs from original 'Price' column

 df['Price (multiplied)'] = df2['Price'].values

 df['Price (multiplied)'] = df['Price (multiplied)'].fillna(df['Price']).astype(int)


查看完整回答
反對 回復 2021-09-25
  • 2 回答
  • 0 關注
  • 213 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號