Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.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中最近的时间戳将两个不同长度的数据帧左键连接起来,而不丢失任何行?_Python_Pandas_Dataframe_Join_Merge - Fatal编程技术网

如何根据python中最近的时间戳将两个不同长度的数据帧左键连接起来,而不丢失任何行?

如何根据python中最近的时间戳将两个不同长度的数据帧左键连接起来,而不丢失任何行?,python,pandas,dataframe,join,merge,Python,Pandas,Dataframe,Join,Merge,我想根据时间戳合并两个数据帧。两个数据帧中的时间戳并不完全相同。我想根据最接近的时间戳合并右数据帧和左数据帧,并在时间戳超出容差限制的地方使用NaN。如果使用asof(),将丢失超出公差限制的所有行 df_left['timestamp'] = [1.1, 2.1, 3.1, 4.1, 5.1] df_left['value1'] = [10, 20, 30, 10, 30] df_right['timestamp'] = [1.05, 2.2, 4.1, 5.12]

我想根据时间戳合并两个数据帧。两个数据帧中的时间戳并不完全相同。我想根据最接近的时间戳合并右数据帧和左数据帧,并在时间戳超出容差限制的地方使用NaN。如果使用asof(),将丢失超出公差限制的所有行

    df_left['timestamp'] = [1.1, 2.1, 3.1, 4.1, 5.1]
    df_left['value1'] = [10, 20, 30, 10, 30]

    df_right['timestamp'] = [1.05, 2.2, 4.1, 5.12]
    df_right['value2'] = [200, 400, 500, 200]

    
想要的输出:

    df_merged['timestamp'] = [1.1, 2.1, 3.1, 4.1, 5.1]
    df_merged['value1'] = [10, 20, 30, 10, 30]
    df_merged['value2'] = [200, 400, NaN, 500, 200]
对我来说,工作顺利:


df_left['value1']
中有6个值,您认为样本数据中应该有5个值吗?是的,您是对的。这是个愚蠢的错误,对不起。改变了,是的;它起作用了。我真的不知道我哪里出错了。我试图使用时间戳索引加入它们,但由于某种原因,它没有按我希望的方式工作。我把它改成了专栏,它成功了。谢谢@啊-太棒了!如果我的回答有帮助,别忘了。谢谢
df_left = pd.DataFrame()
df_right = pd.DataFrame()
df_left['timestamp'] = [1.1, 2.1, 3.1, 4.1, 5.1]
df_left['value1'] = [10, 20, 30, 10, 30]

df_right['timestamp'] = [1.05, 2.2, 4.1, 5.12]
df_right['value2'] = [200, 400, 500, 200]

print(df_left)
print(df_right)

df = pd.merge_asof(df_left, df_right, on='timestamp', direction='nearest', tolerance=0.3)
print (df)
   timestamp  value1  value2
0        1.1      10   200.0
1        2.1      20   400.0
2        3.1      30     NaN
3        4.1      10   500.0
4        5.1      30   200.0