Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.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_Python 3.x - Fatal编程技术网

Python 基于条件的合并

Python 基于条件的合并,python,python-3.x,Python,Python 3.x,我有两个大数据帧,都有datetime列。其中一个日期时间格式为%Y-%m-%dT%H:%m:%S,另一个为毫秒格式:%Y-%m-%dT%H:%m:%S.%f。如何基于datetime列的一部分有效地联接这两个数据帧(基于秒联接) 我知道我们可以使用pandas合并功能或使用类似的功能: df1.merge(df2,左上=['df1\u列'],右上=['df2\u列']) 但是有没有办法定制这个合并,这样我们就可以基于左侧的一列和右侧的另一列的一部分来连接两个数据帧(而不向数据帧添加任何额外的列

我有两个大数据帧,都有datetime列。其中一个日期时间格式为
%Y-%m-%dT%H:%m:%S
,另一个为毫秒格式:
%Y-%m-%dT%H:%m:%S.%f
。如何基于datetime列的一部分有效地联接这两个数据帧(基于秒联接)

我知道我们可以使用pandas合并功能或使用类似的功能:

df1.merge(df2,左上=['df1\u列'],右上=['df2\u列'])

但是有没有办法定制这个合并,这样我们就可以基于左侧的一列和右侧的另一列的一部分来连接两个数据帧(而不向数据帧添加任何额外的列)

输出应为:

datetime_s             datetime_m                 df1.value   df2.value
2018-09-09T12:25:26    2018-09-09T12:25:26.780      1           5
2018-09-09T12:25:26    2018-09-09T12:25:26.650      1           6
2018-09-09T12:25:27    2018-09-09T12:25:27.320      2           7
那么:

df1.merge(df2,左开=df1.df1列.apply(λx:x.second),
right_on=df2.df2_column.apply(λx:x.second))

你会粘贴一个可测试的数据框碎片吗?一种可能的方法是通过只填充你想添加到右边末尾的部分来打破你的数据框并制作一个临时数据框。然后将两者合并。你能举个小例子吗?@RomanPerekhrest添加了testabledataframes@DeepBhatt就像我说的,我不想分解数据帧,数据帧非常大。发布了一个示例。它可能适用于小数据帧,但对于大数据帧(即使每个数据帧有约100万条记录),Python会给出内存错误。
datetime_s             datetime_m                 df1.value   df2.value
2018-09-09T12:25:26    2018-09-09T12:25:26.780      1           5
2018-09-09T12:25:26    2018-09-09T12:25:26.650      1           6
2018-09-09T12:25:27    2018-09-09T12:25:27.320      2           7