python - 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
当我再次运行该程序时,它返回了相同的输出。我不确定我在哪里犯了错误。有人可以帮我解决这个问题吗?
解决方案
数据可能包含空格或其他字符,您可以尝试在每个单元格上调用 strip 函数,这可能会解决问题。
将 datetime64[ns] 用于日期列以获得更好的结果。
推荐阅读
- javascript - 按键盘上的“Enter”键时更改 IFRAME 地址
- python - OrderdDict 的行为
- laravel-5.5 - 拉拉维尔 5.5。- 此集合实例上不存在属性 [xxxx]
- react-native - React Native:如何在打开链接时设置 HTTP 标头,就像使用 Linking.openURL
- javascript - 如何在一个函数节点中拆分多个 msg.payloads,节点红色
- angularjs - 检查 angularJS 1.7.0 中的 http 请求
- gradle - 添加优雅按钮依赖后出现错误
- mysql - 错误代码:1815 内部错误:JSON 包装器:程序中的意外类型
- python - matplotlib的旋转轴注释文本:python
- typescript - 打字稿中的联合类型?