基于Python DataFrame按条件计算行间交易时间差的问题
解决交易间时间差匹配错误的问题
你当前的.diff()方法仅计算相邻行的时间差,无法根据hash与spent_transaction_hash的关联匹配任意位置的对应行,导致非相邻匹配时结果错误。可以通过建立哈希到时间的映射来解决这个问题,具体步骤如下:
确保时间列是datetime类型
如果block_timestamp还不是datetime格式,先进行转换:import pandas as pd df['block_timestamp'] = pd.to_datetime(df['block_timestamp'])构建哈希到时间的映射字典
把hash作为键,对应的block_timestamp作为值,实现快速查找匹配的时间:hash_time_map = df.set_index('hash')['block_timestamp'].to_dict()计算目标时间差
通过map方法获取每行spent_transaction_hash对应的时间,再计算与当前行时间的差值(转换为分钟),无匹配项时填充0:# 计算时间差并转换为分钟 df['Difference'] = (df['block_timestamp'] - df['spent_transaction_hash'].map(hash_time_map)).dt.total_seconds() / 60 # 填充空值并转为整数 df['Difference'] = df['Difference'].fillna(0).astype('int64')
这个方法会精准匹配spent_transaction_hash对应的hash行的时间,不管匹配行在DataFrame的哪个位置——比如你提到的hash为e、spent_transaction_hash为g的行,会正确找到hash=g对应的时间计算差值,不会再出现错误结果。
内容的提问来源于stack exchange,提问作者ralphito
相关产品推荐
相关产品推荐

