Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.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 Pandas-合并具有时差的行(当datetime为索引时)_Python_Excel_Pandas_Merge_Timestamp - Fatal编程技术网

Python Pandas-合并具有时差的行(当datetime为索引时)

Python Pandas-合并具有时差的行(当datetime为索引时),python,excel,pandas,merge,timestamp,Python,Excel,Pandas,Merge,Timestamp,我已经找到了一些任务要做,用熊猫来发展自己,但是我在我使用的数据文件中发现了一些意想不到的错误。实际上,我想自己解决它,但我不知道如何解决 基本上,我有一个excel文件,有几个列——PayType、Money、Date。在PayType列中,我有4种不同的付款类型。汽车租赁费、汽车服务费以及其他2项都不重要。基本上,在每次支付汽车租金时,都会自动扣除服务费,而这恰好发生在同一时间。我使用Pivot表并将PayTypes划分为列,因为我想计算这些费用的百分比 在透视表之前: 时差示例: 数据

我已经找到了一些任务要做,用熊猫来发展自己,但是我在我使用的数据文件中发现了一些意想不到的错误。实际上,我想自己解决它,但我不知道如何解决

基本上,我有一个excel文件,有几个列——PayType、Money、Date。在PayType列中,我有4种不同的付款类型。汽车租赁费、汽车服务费以及其他2项都不重要。基本上,在每次支付汽车租金时,都会自动扣除服务费,而这恰好发生在同一时间。我使用Pivot表并将PayTypes划分为列,因为我想计算这些费用的百分比

在透视表之前:

时差示例:

数据透视表之后:

所以在Pivot表中,租车和支付费用的条目几乎都发生在同一时刻,所以它们的时间是相等的,并且它们在一行中。但也有一些错误,在这些错误中,执行和支付的时间是不同的,只有1到2秒。由于这个时差,它们被分为两行

我尝试使用merge_asof,但没有成功


我如何合并两行,它们有不同的时间(最多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")