开发者社区> 问答> 正文

ValueError:你试图合并datetime64[ns, UTC]和对象列

我有以下两个熊猫数据帧df1和df2。它们都有日期时间列:

import pandas as pd
import numpy as np
import random

np.random.seed(0)
rng = pd.date_range('2015-02-24', periods=5, freq='T')

list=[]
for i in range(len(rng)):
    r=random.randint(1,100)
    if r not in list: list.append(str(r))

df1 = pd.DataFrame({ 'Date': rng, 'Id': list, 'Val1': np.random.randn(len(rng))})
df1.head()


                 Date  Id      Val1
  2015-02-24 00:00:00  96 -0.968980
  2015-02-24 00:01:00  31  0.591243
  2015-02-24 00:02:00  58 -0.782776
  2015-02-24 00:03:00  81 -0.444233
  2015-02-24 00:04:00  73 -0.345186

df2 = pd.DataFrame({ 'Date': rng, 'Id': list, 'Val2': np.random.randn(len(rng))})
df2.head()

然后我想合并它们如下图所示:

df3 = df1[['Id', 'Date']]\
    .groupby('Id')\
    .agg('max')\
    .merge(df2, on=['Id', 'Date'], how='left')

但我得到了错误: 预期的输出:

                 Date  Id      Val2
  2015-02-24 00:00:00  96  2.965560
  2015-02-24 00:01:00  31  5.593345
  2015-02-24 00:02:00  58  11.78276
  2015-02-24 00:03:00  81 -0.444234
  2015-02-24 00:04:00  73 -0.322334

请考虑这是一个简化的复制我的真实代码。在我的实际代码中,我只有合并操作失败与相同的消息。其余代码用于重现所需的数据格式。 问题来源StackOverflow 地址:/questions/59379914/valueerror-you-are-trying-to-merge-on-datetime64ns-utc-and-object-columns

展开
收起
kun坤 2019-12-29 21:33:36 1028 0
1 条回答
写回答
取消 提交回答
  • 试一试:

    df3 = df1[['Id', 'Date']].groupby('Id').agg('max')
    

    然后:

    df3 = pd.merge(df3, df2)
    

    生产:

    >>> df3
                     Date  Id      Val2
    0 2015-02-24 00:03:00  12 -0.103219
    1 2015-02-24 00:04:00  24  0.410599
    2 2015-02-24 00:02:00  32 -0.151357
    3 2015-02-24 00:01:00  41  0.950088
    4 2015-02-24 00:00:00  46 -0.977278
    
    2019-12-29 21:33:43
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载