Python 3.x 用一个数据帧过滤另一个数据帧的性能差
我有两个数据帧,一个保存情节数据的唯一记录,另一个保存事件列表。每集有多个事件。我需要循环查看事件数据,找到与每个事件对应的所有事件,并为新的数据帧写入结果事件。大约有4000集和20000个事件。这个过程是痛苦的缓慢,因为每一集我搜索20000个事件。我猜有一种方法可以通过删除匹配的事件来减少每个循环中搜索的事件数,但我不确定。这是我的代码(有额外的过滤来帮助匹配) 事件Python 3.x 用一个数据帧过滤另一个数据帧的性能差,python-3.x,pandas,dataframe,Python 3.x,Pandas,Dataframe,我有两个数据帧,一个保存情节数据的唯一记录,另一个保存事件列表。每集有多个事件。我需要循环查看事件数据,找到与每个事件对应的所有事件,并为新的数据帧写入结果事件。大约有4000集和20000个事件。这个过程是痛苦的缓慢,因为每一集我搜索20000个事件。我猜有一种方法可以通过删除匹配的事件来减少每个循环中搜索的事件数,但我不确定。这是我的代码(有额外的过滤来帮助匹配) 事件 episode_no ur admission 1 12345 date1
episode_no ur admission
1 12345 date1
1 12345 date1
1 12345 date5
7 67899 date9
并非所有剧集都有事件,只有有剧集的事件需要复制这可能会起作用:
将熊猫作为pd导入
将numpy作为np导入
df1=pd.DataFrame()
df1['ICU_ADM']=[pd.to_datetime(f'2020-01-{x}'),用于范围(1,10)内的x)
df1['test_day']=df1['ICU_ADM'].dt.day
df2=pd.DataFrame()
df2['acmission']=[pd.to_datetime(f'2020-01-{x}'),用于范围(2,10,3)内的x)
df2[“入院日”]=df2[“入院日].dt.day
df2['random_val']=np.random.rand(len(df2),1)
pd.merge_asof(df1,df2,左上=['ICU_ADM'],右上=['入院],容差=pd.TIMEDTA('1天'))
您能提供两个数据帧的示例吗?谢谢-我会看一看。我试图通过示例的方式添加一些简化的数据帧
episode_no HRN name ICU_ADM
1 12345 joe date1
2 78124 ann date1
3 98374 bill date2
4 76523 lucy date3
episode_no ur admission
1 12345 date1
1 12345 date1
1 12345 date5
7 67899 date9