2016-09-22 28 views
1

我有两个dataframes像在多个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 

或者我还可以有这些数据帧将有助于进一步处理。

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

+1

尝试内加入对 '时间' 列 –

回答

3

您可以使用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]) 
+0

我试着使用合并但我重复列值 –

+0

问题是你的价值观是重复的。是否可以通过'Time'列删除重复的行? – jezrael

+0

实际上我的数据是从手机录制的样本。我每秒收集10个样本。所以如果我合并,我会得到30个样本。 –