簡體   English   中英

根據其他df的條件設置基於dataframe的新列

[英]Setting a new column based in a dataframe based on condition of other df

我有兩個 pandas df data1, data2

數據1是

place   lat        long
pl-1   56.130432  106.346887
pl-2   56.182371  106.331682
pl-3   56.182370  106.331685

和 data2 是

gridid    minlat   minlong     maxlat     maxlong
31      56.130430  106.346885  56.130434  106.346889
32      56.182369  106.331680  56.182379  106.331685

我想在data1中添加一個gridId,根據條件

df1['lat]>=data2['minLat'] and df1['long']>=data2['minLong'] and df1['lat']<=data2['maxLat'] and df1['long'] <=df2['maxLong']

以便

數據1是

place   lat        long        grid
pl-1   56.130432  106.346887    31
pl-2   56.182371  106.331682    32
pl-3   56.182370  106.331685    32

我試過但無法理解 pandas 中的邏輯,sf 中的所有 qsn 都僅超過 1 個條件。

首先需要合並兩個DataFrames,沒有公共列,所以使用交叉連接,然后是可能的過濾:

df = df1.merge(data2, how='cross')
m = (df['lat']>=df['minLat']) & (df['long']>=df['minLong']) & 
    (df['lat']<=df['maxLat']) & (df['long'] <=df['maxLong'])

out = df.loc[m, df1.columns.tolist() + ['gridid']]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM