如何将一个数据框列与另一个数据框进行比较并创建一个列

时间:2019-11-15 20:38:53

标签: python-3.x pandas dataframe

我有两个数据帧df1和df2。这是一个小样本

Days 
4
6
9
1
4

我的df2是

Day1  Day2 Alphabets
2       5    abc
4       7    bcd
8       10   ghi
10      12   abc

如果df1中的日期介于day1和day2之间,我想更改df1,使其具有新的df2列的Alphabets。像这样:

if df1['Days'] in between df2['Day1'] and df2['Day2']:
    df1['Alphabets']=df2['Alphabets']

结果是:

Days Alphabets
4     abc
6     bcd
9     ghi

etc.

我尝试进行循环,甚至要花费很多时间。还有其他优雅的方法吗?

预先感谢

1 个答案:

答案 0 :(得分:1)

我将使用numpy广播

s1=df2.Day1.values
s2=df2.Day2.values
s=df1.Days.values[:,None]
df1['V']=((s-s1>0)&(s-s2<0)).dot(df2.Alphabets)
df1
Out[277]: 
   Days    V
0     4  abc
1     6  bcd
2     9  ghi
3     1     
4     4  abc