[英]pandas select dataframe rows according to pair condition
我有一個 dataframe 如下所示:
df = pd.DataFrame({
'contract':[11, 11, 11, 12, 12, 13, 13, 13, 13],
'num_date':[1, 2, 3, 1, 2, 1, 2, 3, 4],
'val': [100, 110, 120, 50, 150, 95, 105, 115, 125]
})
對(合同,num_date)是唯一的
我也有元組列表:
filt = [(11, 1),
(11, 1),
(12, 3),
(12, 2),
(13, 3),
(13, 1)]
列表中的每個元組都是上面 dataframe 的一對 (contract, num_date)。
我需要根據此列表從 dataframe 中選擇行作為條件,如果元組重復多次,則與其對應的行也必須重復相同的次數。
例如對於 dataframe 和上述解決方案的元組列表是
合同 | num_date | 值 |
---|---|---|
11 | 1 | 100 |
11 | 1 | 100 |
12 | 2 | 150 |
13 | 3 | 115 |
13 | 1 | 95 |
如果解決方案具有時間效率會更好
首先,您需要將元組轉換為 dataframe:
df2 = pd.DataFrame(filt)
df2.columns = ['contract', 'num_date']
然后在兩者之間合並並刪除空值:
df2 = df2.merge(right=df, on = ['contract', 'num_date'], how='left')
df2.dropna(subset=['val'], inplace=True)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.