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

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

Pandas 如何將兩行與復(fù)雜的規(guī)則/條件組合在一起

Pandas 如何將兩行與復(fù)雜的規(guī)則/條件組合在一起

桃花長相依 2023-07-11 16:20:38
我有一個數(shù)據(jù)框:import pandas as pddf = pd.DataFrame({    "ID": ['company A', 'company A', 'company A', 'company B','company B', 'company B', 'company C', 'company C','company C','company C', 'company D', 'company D','company D'],    'Sender': [28, 'remove1', 'flag_source', 56, 28, 312, 'remove2', 'flag_source', 78, 102, 26, 101, 96],    'Receiver': [129, 28, 'remove1', 172, 56, 28, 61, 'remove2', 12, 78, 98, 26, 101],    'Date': ['2020-04-12', '2020-03-20', '2020-03-20', '2019-02-11', '2019-01-31', '2018-04-02', '2020-06-29', '2020-06-29', '2019-11-29', '2019-10-01', '2020-04-03', '2020-01-30', '2019-10-18'],    'Sender_type': ['house', 'temp', 'house', 'house', 'house', 'house', 'temp', 'house', 'house','house','house', 'temp', 'house'],    'Receiver_type': ['house', 'house', 'temp', 'house','house','house','house', 'temp', 'house','house','house','house','temp'],    'Price': [32, 50, 47, 21, 23, 19, 52, 39, 12, 22, 61, 53, 19]})我希望通過以下規(guī)則合并/合并每個組“ID”(公司 x)的兩行:將“Sender”中包含“flag_source”的行及其上面的行合并為一個新行。在這個新行中:Sender 是 flag_source,'Revceiver' 是其上面的值(刪除兩個 'remove' 值),Date 是上面的日期,Sender_type 和 Receiver_type 是 'house','Price' 是上面的上一個值價值。然后刪除兩行。例如,對于 A 公司,它將合并第 1 行和第 2 行以生成以下新行:希望我對這個問題的解釋是清楚的。由于這是一個簡短的示例,實際案例有很多這樣的數(shù)據(jù),我寫了一個循環(huán),但非常慢且效率低下,所以如果您有任何想法和有效的方法,請幫助。非常感謝您的幫助!
查看完整描述

1 回答

?
互換的青春

TA貢獻1797條經(jīng)驗 獲得超6個贊

我相信以下方法正在發(fā)揮作用:


mask = df.Sender == 'flag_source'

df[mask] = df.shift()

df.loc[mask, 'Sender'] = 'flag_source'

df.loc[mask, ['Sender_type','Receiver_type']] = 'house'

df = df[~mask.shift(-1).fillna(False).astype(bool)].reset_index(drop=True)

所以步驟是(按行):

  • 制作您需要更改的行的掩碼

  • 使用“shift”將這些行設(shè)置為等于前一行

  • 將這些行重寫Senderflag_source

  • 還重寫Sender_typeReceiver_type

  • shift通過在蒙版上再次使用 a 來刪除前面的行。這看起來有點復(fù)雜;loc您還可以對不包含字符串的行執(zhí)行類似的操作remove

輸出:

          ID       Sender Receiver        Date Sender_type Receiver_type  Price

0   company A           28      129  2020-04-12       house         house   32.0

1   company A  flag_source       28  2020-03-20       house         house   50.0

2   company B           56      172  2019-02-11       house         house   21.0

3   company B           28       56  2019-01-31       house         house   23.0

4   company B          312       28  2018-04-02       house         house   19.0

5   company C  flag_source       61  2020-06-29       house         house   52.0

6   company C           78       12  2019-11-29       house         house   12.0

7   company C          102       78  2019-10-01       house         house   22.0

8   company D           26       98  2020-04-03       house         house   61.0

9   company D          101       26  2020-01-30        temp         house   53.0

10  company D           96      101  2019-10-18       house          temp   19.0


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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