识别多个数据框中的重叠行

Identifying overlapping rows in multiple dataframes

我有两个数据框

df1

Time      accler
19.13.33  24
19.13.34  24
19.13.35  25
19.13.36  27
19.13.37  25
19.13.38  27
19.13.39  25
19.13.40  24

df2

 Time      accler
19.13.29  24
19.13.30  24
19.13.31  25
19.13.32  27
19.13.33  25
19.13.34  27
19.13.35  25
19.13.36  24

这两个数据帧在 19.13.33 到 19.13.36 的列时间重叠。因此,每当有重叠时,我只想要由重叠行组成的数据框

预期输出

df1

 Time      accler
19.13.33  24
19.13.34  24
19.13.35  25
19.13.36  27

df2

Time      accler
19.13.33  25
19.13.34  27
19.13.35  25
19.13.36  24

或者我也可以有一个 concat 数据帧,这将有助于进一步处理。

我尝试了 merge 但没有成功,因为数据帧是根据 csv 文件的数量动态创建的。我尝试首先连接所有数据帧并尝试遍历行但没有找到方法。

可以使用merge,默认参数how='inner'可以省略:

df = pd.merge(df1, df2, on='Time')
print (df)
       Time  accler_x  accler_y
0  19.13.33        24        25
1  19.13.34        24        27
2  19.13.35        25        25
3  19.13.36        27        24

df1 = df[['Time','accler_x']].rename(columns={'accler_x':'accler'})
print (df1)
       Time  accler
0  19.13.33      24
1  19.13.34      24
2  19.13.35      25
3  19.13.36      27

df2 = df[['Time','accler_y']].rename(columns={'accler_y':'accler'})
print (df2)
       Time  accler
0  19.13.33      25
1  19.13.34      27
2  19.13.35      25
3  19.13.36      24

如果你需要 merge 多个 DataFrames 使用 reduce:

#Python 3
import functools

df = functools.reduce(lambda x,y: x.merge(y,on=['Time']), [df1, df2])

#python 2
df = reduce(lambda x,y: x.merge(y,on=['Time']), [df1, df2])