Python 合并日期时间列上的数据(POSIXct格式)

Python 合并日期时间列上的数据(POSIXct格式),python,r,pandas,merge,Python,R,Pandas,Merge,我想合并日期时间列dtype上的两个数据帧。日期时间列包含相似和不同的值。但我无法合并它们,使所有唯一的日期时间行最终都存在..在不常见的列中有NA。 我在第二个数据帧的日期时间列中获取NAs。在R和python中都尝试过 python代码: 在R中,数据类型是使用as.POSIXct的日期时间 df_会议: 预期产出: “在外部合并”应将它们全部合并: outer:使用来自两个帧的键的并集,类似于SQL完全外部联接;按字典顺序对键排序 根据您的评论,您需要所有日期,而不仅仅是预期输出中显示

我想合并日期时间列dtype上的两个数据帧。日期时间列包含相似和不同的值。但我无法合并它们,使所有唯一的日期时间行最终都存在..在不常见的列中有NA。 我在第二个数据帧的日期时间列中获取NAs。在R和python中都尝试过

python代码: 在R中,数据类型是使用as.POSIXct的日期时间 df_会议: 预期产出: “在外部合并”应将它们全部合并:
  • outer
    :使用来自两个帧的键的并集,类似于SQL完全外部联接;按字典顺序对键排序
  • 根据您的评论,您需要所有日期,而不仅仅是
    预期输出中显示的日期
  • 如果希望按日期排序,请添加参数
    sort=True
df\u exp=pd.merge(df\u so2,df\u met,on='Date\u Time',how='outer')
X X POC基准日期时间日期GMT样本测量MDL X y空气温度设定1露点温度设定1
1.0 2.0 WGS84 2015-01-01 3:00 01/01/2015 09:00 2.3 0.2 3 35.6 35.6
2.0 2.0 WGS84 2015-01-01 4:00 01/01/2015 10:00 2.5 0.2 4 33.8 33.8
3.0 2.0 WGS84 2015-01-01 5:00 01/01/2015 11:00 2.1 0.2 5 33.2 33.2
4.0 2.0 WGS84 2015-01-01 6:00 01/01/2015 12:00 2.3 0.2 6 33.8 33.8
5.0 2.0 WGS84 2015-01-01 7:00 01/01/2015 13:00 1.1 0.2 7 33.8 33.8
楠楠楠2015-01-01 1:00楠楠楠1 35.6 35.6
楠楠楠2015-01-01 2:00楠楠楠2 35.6 35.6
没有来自
df_met
的列:
df_exp.drop(列=['X_y'、'air_temp_set_1'、'dew_point_temp_set_1'],inplace=True)
df_exp.rename(列={'X_X':'X'},inplace=True)
X POC基准日期\时间日期\ GMT样本。测量MDL
1.0 2.0 WGS84 2015-01-01 3:00 01/01/2015 09:00 2.3 0.2
2.0 2.0 WGS84 2015-01-01 4:00 01/01/2015 10:00 2.5 0.2
3.0 2.0 WGS84 2015-01-01 5:00 01/01/2015 11:00 2.1 0.2
4.0 2.0 WGS84 2015-01-01 6:00 01/01/2015 12:00 2.3 0.2
5.0 2.0 WGS84 2015-01-01 7:00 01/01/2015 13:00 1.1 0.2
楠楠楠2015-01-01 1:00楠楠楠楠楠
楠楠楠2015-01-01 2:00楠楠楠楠楠
合并(df\u so2,df\u met,by=“Date\u Time”,all=T)
日期时间X.X POC基准日期GMT样本测量MDL X.y空气温度设置1露点温度设置1
1 2015-01-01 1:00 NA NA 1 35.6 35.6
2 2015-01-01 2:00北美2 35.6 35.6
3 2015-01-01 3:00 1 2 WGS84 01/01/2015 09:00 2.3 0.2 3 35.6 35.6
4 2015-01-01 4:00 2 WGS84 01/01/2015 10:00 2.5 0.2 4 33.8 33.8
5 2015-01-01 5:00 3 WGS84 01/01/2015 11:00 2.1 0.2 5 33.2 33.2
6 2015-01-01 6:00 42 WGS84 01/01/2015 12:00 2.3 0.2 6 33.8 33.8
7 2015-01-01 7:00 52 WGS84 01/01/2015 13:00 1.1 0.2 7 33.8 33.8
  • 无论谁在读这篇文章,都不要投反对票。我正在和OP一起解决他的错误,然后我们将删除这个答案
df\u exp=pd.merge(df\u so2,df\u met,on='Date\u Time',how='outer')

我得到:

POC基准日期时间日期GMT样本测量MDL空气温度设定露点温度设定相对湿度设定风速设定云层风向设定压力设定能见度设定风向设定天气设定
2 WGS84 2015-01-01 3:00 01/01/2015 09:00 2.3 0.2 35.6 35.6 100.0 0 0.0 14.0 0 0.0 29.943333 9.0 0 0 0.25 N雾
1 WGS84 2015-01-01 3:00 01/01/2015 09:00 0.6 2.0 35.6 35.6 100.0 0 0.0 14.0 0 0.0 29.943333 9.0 0 0 0.25 N雾
1 WGS84 2015-01-01 3:00 01/01/2015 12:00 7.4 0.2 35.6 35.6 100.0 0.0 14.0 0 0.0 29.943333 9.0 0 0.25 N雾
1 WGS84 2015-01-01 3:00 01/01/2015 10:00 1.0 0.2 35.6南部
笔记:
  • 检查
    df\u met.info()
    df\u.info()
    并验证
    Date\u Time
    是否为
    非空datetime64[ns]
    • 如果没有,请尝试以下操作:
    • df\u so2.Date\u Time=pd.to\u datetime(df\u so2.Date\u Time)
    • df_met.Da
      
      df=pd.merge(df_met, df_so2, how='left', on='Date_Time')
      
      df_2<-join(so2, met_km, type="inner")
      df3 <- merge(so2, met_km, all = TRUE)
      df_4 <- merge(so2, met_km, by.x = "Date_Time", by.y = "Date_Time")
      
       X  POC  Datum        Date_Time          Date_GMT  Sample.Measurement  MDL
       1    2  WGS84  2015-01-01 3:00  01/01/2015 09:00                 2.3  0.2
       2    2  WGS84  2015-01-01 4:00  01/01/2015 10:00                 2.5  0.2
       3    2  WGS84  2015-01-01 5:00  01/01/2015 11:00                 2.1  0.2
       4    2  WGS84  2015-01-01 6:00  01/01/2015 12:00                 2.3  0.2
       5    2  WGS84  2015-01-01 7:00  01/01/2015 13:00                 1.1  0.2
      
       X        Date_Time  air_temp_set_1  dew_point_temperature_set_1
       1  2015-01-01 1:00            35.6                         35.6
       2  2015-01-01 2:00            35.6                         35.6
       3  2015-01-01 3:00            35.6                         35.6
       4  2015-01-01 4:00            33.8                         33.8
       5  2015-01-01 5:00            33.2                         33.2
       6  2015-01-01 6:00            33.8                         33.8
       7  2015-01-01 7:00            33.8                         33.8
      
       X  POC    Datum        Date_Time          Date_GMT  Sample.Measurement  MDL
       1  1.0  2 WGS84  2015-01-01 3:00  01/01/2015 09:00                 2.3  0.2
       2  2.0  2 WGS84  2015-01-01 4:00  01/01/2015 10:00                 2.5  0.2
       3  NaN      NaN  2015-01-01 1:00               NaN                 NaN  NaN
       4  NaN      NaN  2015-01-01 2:00               NaN                 NaN  NaN
      
      merge(df_so2, df_met, by = "Date_Time", all = T)
      
              Date_Time X.x POC Datum         Date_GMT Sample.Measurement MDL X.y air_temp_set_1 dew_point_temperature_set_1
      1 2015-01-01 1:00  NA  NA  <NA>             <NA>                 NA  NA   1           35.6                        35.6
      2 2015-01-01 2:00  NA  NA  <NA>             <NA>                 NA  NA   2           35.6                        35.6
      3 2015-01-01 3:00   1   2 WGS84 01/01/2015 09:00                2.3 0.2   3           35.6                        35.6
      4 2015-01-01 4:00   2   2 WGS84 01/01/2015 10:00                2.5 0.2   4           33.8                        33.8
      5 2015-01-01 5:00   3   2 WGS84 01/01/2015 11:00                2.1 0.2   5           33.2                        33.2
      6 2015-01-01 6:00   4   2 WGS84 01/01/2015 12:00                2.3 0.2   6           33.8                        33.8
      7 2015-01-01 7:00   5   2 WGS84 01/01/2015 13:00                1.1 0.2   7           33.8                        33.8