我有以下两个熊猫数据帧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
试一试:
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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。