Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 用一个数据帧过滤另一个数据帧的性能差_Python 3.x_Pandas_Dataframe - Fatal编程技术网

Python 3.x 用一个数据帧过滤另一个数据帧的性能差

Python 3.x 用一个数据帧过滤另一个数据帧的性能差,python-3.x,pandas,dataframe,Python 3.x,Pandas,Dataframe,我有两个数据帧,一个保存情节数据的唯一记录,另一个保存事件列表。每集有多个事件。我需要循环查看事件数据,找到与每个事件对应的所有事件,并为新的数据帧写入结果事件。大约有4000集和20000个事件。这个过程是痛苦的缓慢,因为每一集我搜索20000个事件。我猜有一种方法可以通过删除匹配的事件来减少每个循环中搜索的事件数,但我不确定。这是我的代码(有额外的过滤来帮助匹配) 事件 episode_no ur admission 1 12345 date1

我有两个数据帧,一个保存情节数据的唯一记录,另一个保存事件列表。每集有多个事件。我需要循环查看事件数据,找到与每个事件对应的所有事件,并为新的数据帧写入结果事件。大约有4000集和20000个事件。这个过程是痛苦的缓慢,因为每一集我搜索20000个事件。我猜有一种方法可以通过删除匹配的事件来减少每个循环中搜索的事件数,但我不确定。这是我的代码(有额外的过滤来帮助匹配)

事件

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