相关疑难解决方法(0)

如何连接列值在一定范围内的两个数据帧?

给定两个dataframes df_1df_2如何加入他们的行列,使得datetime列df_1是介于两者之间start,并end 在数据帧df_2:

print df_1

  timestamp              A          B
0 2016-05-14 10:54:33    0.020228   0.026572
1 2016-05-14 10:54:34    0.057780   0.175499
2 2016-05-14 10:54:35    0.098808   0.620986
3 2016-05-14 10:54:36    0.158789   1.014819
4 2016-05-14 10:54:39    0.038129   2.384590


print df_2

  start                end                  event    
0 2016-05-14 10:54:31  2016-05-14 10:54:33  E1
1 2016-05-14 10:54:34  2016-05-14 10:54:37  E2
2 2016-05-14 10:54:38  2016-05-14 10:54:42  E3
Run Code Online (Sandbox Code Playgroud)

获取相应的event位置和df1.timestamp之间df_2.startdf2.end

  timestamp              A          B          event
0 2016-05-14 10:54:33 …
Run Code Online (Sandbox Code Playgroud)

python datetime intervals dataframe pandas

47
推荐指数
5
解决办法
3521
查看次数

合并pandas数据帧,其中一个值介于两个其他值之间

我需要在标识符和条件上合并两个pandas数据帧,其中一个数据帧中的日期在另一个数据帧中的两个日期之间.

Dataframe A有一个日期("fdate")和一个ID("cusip"):

在此输入图像描述

我需要将此与此数据帧B合并:

在此输入图像描述

A.cusip==B.ncusipA.fdate之间B.namedtB.nameenddt.

在SQL中这将是微不足道的,但我能看到如何在pandas中执行此操作的唯一方法是首先在标识符上无条件合并,然后在日期条件上进行过滤:

df = pd.merge(A, B, how='inner', left_on='cusip', right_on='ncusip')
df = df[(df['fdate']>=df['namedt']) & (df['fdate']<=df['nameenddt'])]
Run Code Online (Sandbox Code Playgroud)

这真的是最好的方法吗?似乎如果可以在合并中进行过滤以避免在合并之后但在过滤器完成之前具有可能非常大的数据帧,则会好得多.

python timespan join date-range pandas

46
推荐指数
3
解决办法
2万
查看次数

标签 统计

pandas ×2

python ×2

dataframe ×1

date-range ×1

datetime ×1

intervals ×1

join ×1

timespan ×1