首页 > 解决方案 > Python Pandas:合并返回 Nan

问题描述

我有两个数据框,即 df1 和 df2。df1 是

df1

       date     time
0   2015-04-01  00:00:00
1   2015-04-01  00:30:00
2   2015-04-01  01:00:00
3   2015-04-01  01:30:00
4   2015-04-01  02:00:00

df1 的数据类型是:

date             object
time    timedelta64[ns]
dtype: object

df2 是:

     INCIDENT_TIME  INTERRUPTION_TIME      MINUTES
0   2015-01-08         03:00:00             1056.0
1   2015-01-10         23:30:00             3234.0
2   2015-04-01         01:00:00             3712.0
3   2015-04-01         01:30:00             3045.0
4   2015-04-01         02:00:00             525.0

datatype of df2 is 
INCIDENT_TIME                 object
INTERRUPTION_TIME    timedelta64[ns]
MINUTES               float64
dtype: object

我想做左合并。所以我的代码是:

final_df= pd.merge(df1,df2,left_on=['date','time'],right_on=['INCIDENT_TIME','INTERRUPTION_TIME'],how='left')

但是,它不会产生所需的输出。输出是:

       date      time     INCIDENT_TIME   INTERRUPTION_TIME  CONSUM_MINUTES
0   2015-04-01  00:00:00    NaN               NaT                NaN
1   2015-04-01  00:30:00    NaN               NaT                NaN
2   2015-04-01  01:00:00    NaN               NaT                NaN
3   2015-04-01  01:30:00    NaN               NaT                NaN
4   2015-04-01  02:00:00    NaN               NaT                NaN 

出于诊断目的,我使用了内部连接,输出为空白/空。最初我认为数据类型的差异可能会导致问题。所以我将df1的时间和df2的INTERRUPTION_TIME的数据类型改为str。现在两个数据帧的数据类型是:

df1
date    object
time    object
dtype: object

df2
INCIDENT_TIME         object
INTERRUPTION_TIME     object
MINUTES               float64
dtype: object

当我再次运行该程序时,它返回了相同的输出。我不确定我在哪里犯了错误。有人可以帮我解决这个问题吗?

标签: pythonpython-3.xpandas

解决方案


数据可能包含空格或其他字符,您可以尝试在每个单元格上调用 strip 函数,这可能会解决问题。

将 datetime64[ns] 用于日期列以获得更好的结果。


推荐阅读