【发布时间】:2021-06-17 14:32:33
【问题描述】:
如果满足预定条件,目标是按行组合两个df。
具体来说,如果列之间的差异小于或等于threshold,则加入df的行。
给定两个df:df1 和 df2,下面的代码部分实现了目标。
import pandas as pd
df1 = pd.DataFrame ( {'time': [2, 3, 4, 24, 31]} )
df2 = pd.DataFrame ( {'time': [4.1, 24.7, 31.4, 5]} )
th = 0.9
all_comb=[]
for index, row in df1.iterrows ():
for index2, row2 in df2.iterrows ():
diff = abs ( row ['time'] - row2 ['time'] )
if diff <= th:
all_comb.append({'idx_1':index,'time_1':row ['time'], 'idx_2':index2,'time_2':row2 ['time']})
df_all = pd.DataFrame(all_comb)
输出
idx_1 time_1 idx_2 time_2
0 2 4 0 4.1
1 3 24 1 24.7
2 4 31 2 31.4
但是,上述方法忽略了某些信息,即来自df1 的值 2 和 3,以及来自df2 的值 5。
预期的输出应该是这样的
idx_1 time_1 idx_2 time_2
0 2 NA NA
1 3 NA NA
2 4 0 4.1
3 24 1 24.7
4 31 2 31.4
NA NA 3 5
感谢任何提示或任何比上述建议更紧凑和高效的方式。
【问题讨论】: