【发布时间】:2020-11-17 22:35:34
【问题描述】:
我正在寻找基于特定条件搜索大型数据框的最有效方法。我尝试过 .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 万行。
我愿意将数据帧转换为字典或任何其他形式,但根据我的研究,我被告知字典在这种大小下效率较低。有人有什么建议吗?
【问题讨论】:
标签: python pandas numpy dataframe search