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è)置為等于前一行
將這些行重寫
Sender
為flag_source
還重寫
Sender_type
和Receiver_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
添加回答
舉報