2016-11-10 160 views
1

我有两个类似的数据框。 df1和df2具有相同的结构。并且他们在一列(policyID)中具有相同的数据,而其他列可能具有不同的数据,并且一列包含基于我需要将它们隔离的时间戳。 DF1 -选择熊猫数据帧的多个条件

policyID,statecode,county,timestamp 
114455,FL,CLAY COUNTY,2015-12-23 

df2-

policyID,statecode,county,timestamp 
114455,FL,CLAY COUNTY,2016-12-34 

我需要建立一个新的数据帧说DF3其中包含从DF1的数据,如果DF1的时间戳较高,从DF2如果DF2的时间戳较高。

回答

0

我认为你需要concatsort_values,最后需要groupbyfirstfirst

print (df1) 
      0 1    2   3 
0 114453 FL CLAY COUNTY 2016-12-23 
1 114455 FL1 CLAY COUNTY1 2016-12-11 
2 114457 FL1 CLAY COUNTY1 2016-12-11 

print (df2) 
     0 1    2   3 
0 114453 FL1 CLAY COUNTY1 2016-12-15 
1 114455 FL1 CLAY COUNTY1 2016-12-15 
2 114457 FL1 CLAY COUNTY1 2016-12-15 

df1.iloc[:,3] = pd.to_datetime(df1.iloc[:,3]) 
df2.iloc[:,3] = pd.to_datetime(df2.iloc[:,3]) 

df3 = pd.concat([df1,df2]) 
df3 = df3.sort_values(df3.columns[3]).groupby(df3.columns[0]).first() 
print (df3) 
      1    2   3 
0         
114453 FL1 CLAY COUNTY1 2016-12-15 
114455 FL1 CLAY COUNTY1 2016-12-11 
114457 FL1 CLAY COUNTY1 2016-12-11 

df3 = pd.concat([df1,df2]) 
df4 = df3.sort_values(df3.columns[3]).groupby(df3.columns[0]).last() 
print (df4) 
      1    2   3 
0         
114453 FL CLAY COUNTY 2016-12-23 
114455 FL1 CLAY COUNTY1 2016-12-15 
114457 FL1 CLAY COUNTY1 2016-12-15 
+0

我都怀疑,drop_duplicate将删除重复的,怎么会比较时间戳? 没有保留参数它会保存第一个记录,不考虑时间戳 –

+0

ops,sorrry,给我asec – jezrael

+0

请检查编辑 - 添加sort_values排序数据帧的'timestamp' – jezrael