【发布时间】:2020-01-08 15:36:47
【问题描述】:
我有两个 Dask 数据帧,长度为 5000 的 df1 和长度为 100000 的 df2,都带有 start_time 和 end_time 列。我试图找到 df2 的 start_time-end_time 间隔小于或等于 df1 的 start_time-end_time 间隔的 df1 行(df1.start_time
我尝试了以下方法,但无济于事:
df3 = dd.from_pandas(pd.DataFrame(), npartitions=1)
for _, df2_row in df2.iterrows():
df3_chunk = df1.apply(lambda df1_row: df1_row.start_time <= df2_row.start_time <= df2_row.end_time <= df1_row.end_time, axis=1)
df3 = dd.concat([df3, df3_chunk])
df3 = pd.DataFrame()
for _, df2_row in df2.iterrows():
df3_chunk = df1.loc[df1.start_time <= df2_row.start_time <= df2_row.end_time <= df1.end_time]
df3 = dd.concat([df3, df3_chunk])
第一个 sn-p 一直在运行,而第二个返回 ValueError: Not all divisions are known, can't align partitions. Please use `set_index` to set the index.
示例输入(df1、df2)和输出(df3):
# df1
start_time, end_time
2019-10-10 01:01:01, 2019-10-11 01:01:01
2001-01-01 00:00:01, 2001-02-02 03:04:05
# df2
start_time, end_time
2019-10-10 09:07:05, 2019-10-10 11:12:10
# df3
start_time, end_time
2019-10-10 01:01:01, 2019-10-11 01:01:01
有没有办法做到这一点?
【问题讨论】:
-
欢迎使用 Stackoverflow,请提供您的数据框示例和您的预期输出
-
谢谢。我用示例输入和输出编辑了问题:-)
标签: python pandas dataframe dask