Python Pandas-合并具有时差的行(当datetime为索引时)
我已经找到了一些任务要做,用熊猫来发展自己,但是我在我使用的数据文件中发现了一些意想不到的错误。实际上,我想自己解决它,但我不知道如何解决 基本上,我有一个excel文件,有几个列——PayType、Money、Date。在PayType列中,我有4种不同的付款类型。汽车租赁费、汽车服务费以及其他2项都不重要。基本上,在每次支付汽车租金时,都会自动扣除服务费,而这恰好发生在同一时间。我使用Pivot表并将PayTypes划分为列,因为我想计算这些费用的百分比 在透视表之前: 时差示例: 数据透视表之后: 所以在Pivot表中,租车和支付费用的条目几乎都发生在同一时刻,所以它们的时间是相等的,并且它们在一行中。但也有一些错误,在这些错误中,执行和支付的时间是不同的,只有1到2秒。由于这个时差,它们被分为两行 我尝试使用merge_asof,但没有成功Python Pandas-合并具有时差的行(当datetime为索引时),python,excel,pandas,merge,timestamp,Python,Excel,Pandas,Merge,Timestamp,我已经找到了一些任务要做,用熊猫来发展自己,但是我在我使用的数据文件中发现了一些意想不到的错误。实际上,我想自己解决它,但我不知道如何解决 基本上,我有一个excel文件,有几个列——PayType、Money、Date。在PayType列中,我有4种不同的付款类型。汽车租赁费、汽车服务费以及其他2项都不重要。基本上,在每次支付汽车租金时,都会自动扣除服务费,而这恰好发生在同一时间。我使用Pivot表并将PayTypes划分为列,因为我想计算这些费用的百分比 在透视表之前: 时差示例: 数据
我如何合并两行,它们有不同的时间(最多2秒),而且这个时间列(日期)是透视表的实际索引。我也有类似的问题。我需要合并多个传感器的时间序列数据。传感器测量的时间间隔为5秒。时间格式为yyyy:MM:dd HH:MM:ss。为了进行合并,我还需要对用于合并的列进行排序
sensors_livingroom = load(filename_livingroom)
sensors_bedroom = load(filename_bedroom)
sensors_livingroom = sensors_livingroom.set_index("time")
sensors_bedroom = sensors_bedroom.set_index("time")
sensors_livingroom.index = pd.to_datetime(sensors_livingroom.index, dayfirst=True)
sensors_bedroom.index = pd.to_datetime(sensors_bedroom.index, dayfirst=True)
sensors_livingroom.sort_index(inplace=True)
sensors_bedroom.sort_index(inplace=True)
sensors = pd.merge_asof(sensors_bedroom, sensors_livingroom, on='time', direction="nearest")
在我的例子中,我想合并到最近的时间值,所以我将参数方向设置为最近。在您的情况下,一个数据帧的时间似乎总是比另一个数据帧的时间小,因此最好将方向参数设置为向前或向后。请参见您能显示您的输入和输出示例吗?@Johnny当然,我现在添加
sensors_livingroom = load(filename_livingroom)
sensors_bedroom = load(filename_bedroom)
sensors_livingroom = sensors_livingroom.set_index("time")
sensors_bedroom = sensors_bedroom.set_index("time")
sensors_livingroom.index = pd.to_datetime(sensors_livingroom.index, dayfirst=True)
sensors_bedroom.index = pd.to_datetime(sensors_bedroom.index, dayfirst=True)
sensors_livingroom.sort_index(inplace=True)
sensors_bedroom.sort_index(inplace=True)
sensors = pd.merge_asof(sensors_bedroom, sensors_livingroom, on='time', direction="nearest")