繁体   English   中英

用条件搜索数据框的最快方法

[英]Fastest way to search dataframe with conditions

我正在寻找基于特定条件搜索大型数据框的最有效方法。 我尝试过 .loc、.iloc 和 numpy,但它们都太慢了。 迄今为止最快的是 numpy,我的代码如下所示:

ParsedTimestamp = []

for index, row in df_primary.iterrows():

    d_index = list(np.where((df_data['filePath'] == row['FilePath']) & (df_data['session id'] == row['ChannelName']) & (df_data['message'] == row['Text']) & (df_data['d_temp'] == row['MessageTimestamp']))[0])[0]  

    ParsedTimestamp.append(df_data.loc[d_index]['Datetime UTC'])

如您所知,我有一个数据帧 (df_primary),我需要匹配来自另一个数据帧 (df_data) 的 4 个值才能找到更准确的时间戳。 问题是每次在 df_data 中搜索与 df_primary 中的行匹配的索引都需要超过 1 秒,这太长了。 df_data 数据帧大约有 250 万行。

我愿意将数据帧转换为字典或任何其他形式,但从我的研究中我得知字典在这种大小下效率较低。 有人有什么建议吗?

你为什么不合并?

ParsedTimestamp = pd.merge(
    df_data, df_primary,
    left_on=['filePath','session id','message','MessageTimestamp','d_temp'],
    right_on=['FilePath','ChannelName','Text','MessageTimestamp']
)['Datetime UTC']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM