Python 如果值落在其他数据框的范围内,则使用pandas从其他数据框添加列
我有这样一个数据框:Python 如果值落在其他数据框的范围内,则使用pandas从其他数据框添加列,python,pandas,dataframe,Python,Pandas,Dataframe,我有这样一个数据框: df1 col1 col2 col3 A 11 RS B 23 PN A 24 LR C 23 TN D 1 WB C 23 PR 另一个数据帧: df2 name min max points A 1 15 1 A
df1
col1 col2 col3
A 11 RS
B 23 PN
A 24 LR
C 23 TN
D 1 WB
C 23 PR
另一个数据帧:
df2
name min max points
A 1 15 1
A 15 30 2
B 1 15 1
B 15 30 2
C 1 15 1
C 15 30 2
D 1 15 1
D 15 30 2
如果df1的col2值低于df2的最大值和最小值,我想将点值从df2放到df1
我正在寻找的数据帧
df3
col1 col2 col3 points
A 11 RS 1
B 23 PN 2
A 24 LR 2
C 23 TN 2
D 1 WB 1
C 23 PR 2
如何使用pandas以最高效的方式进行此操作首先使用,然后使用以下各项进行过滤:
添加列点的解决方案:
@耶斯雷尔已编辑,请检查
df = df1.merge(df2, left_on='col1', right_on='name')
df = df[df['col2'].between(df['min'], df['max'])].drop(['name','min','max'], axis=1)
print (df)
col1 col2 col3 points
0 A 11 RS 1
3 A 24 LR 2
5 B 23 PN 2
7 C 23 TN 2
9 C 23 PR 2
10 D 1 WB 1
df = df1.reset_index().merge(df2, left_on='col1', right_on='name')
df = df.loc[df['col2'].between(df['min'], df['max']),['index','points']]
print (df)
index points
0 0 1
3 2 2
5 1 2
7 3 2
9 5 2
10 4 1
df1['points'] = df.set_index('index')['points']
print (df1)
col1 col2 col3 points
0 A 11 RS 1
1 B 23 PN 2
2 A 24 LR 2
3 C 23 TN 2
4 D 1 WB 1
5 C 23 PR 2