Python 3.x 如何将一个dataframe列与另一个dataframe列进行比较并创建列
我有两个数据帧df1和df2。这是一个小样本Python 3.x 如何将一个dataframe列与另一个dataframe列进行比较并创建列,python-3.x,pandas,dataframe,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,以便在df1中的日期介于第1天和第2天之间时,它具有来自df2的新列字母表。比如: if df1['Days'] in between df2['Day1'] and df2['Day2']: df
Days
4
6
9
1
4
我的df2是
Day1 Day2 Alphabets
2 5 abc
4 7 bcd
8 10 ghi
10 12 abc
我想更改我的df1,以便在df1中的日期介于第1天和第2天之间时,它具有来自df2的新列字母表。比如:
if df1['Days'] in between df2['Day1'] and df2['Day2']:
df1['Alphabets']=df2['Alphabets']
结果是:
Days Alphabets
4 abc
6 bcd
9 ghi
etc.
我尝试了循环,它甚至花费了很多时间来运行。还有其他优雅的方式吗
提前感谢我将使用
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
s1=df2.Day1.values
s2=df2.Day2.0值
s=df1.Days.values[:,无]
df1['V']=((s-s1>0)和(s-s2)