我需要合并两个熊猫数据帧上的一个标识符和一个条件,其中一个数据帧中的日期是在另一个数据帧中的两个日期之间。
Dataframe A 有一个日期(“ fdate”)和一个 ID (“ cusip”) :
我需要把它和这个数据框 B 合并:
在 A.cusip==B.ncusip
和 A.fdate
之间是 B.namedt
和 B.nameenddt
。
在 SQL 中,这是微不足道的,但是我认为在熊猫中做到这一点的唯一方法是首先无条件地合并标识符,然后根据日期条件进行过滤:
df = pd.merge(A, B, how='inner', left_on='cusip', right_on='ncusip')
df = df[(df['fdate']>=df['namedt']) & (df['fdate']<=df['nameenddt'])]
这真的是最好的办法吗?看起来,如果能够在合并中进行过滤,以避免在合并之后但在过滤完成之前出现潜在的非常大的数据帧,那么效果会好得多。