![](/img/trans.png)
[英]How to create new column in dataframe based on condition from other 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.