【问题标题】:Unable to perform pd.merge无法执行 pd.merge
【发布时间】:2017-08-04 12:32:36
【问题描述】:

我有 2 个 csv 我想根据索引执行外连接(索引是 2 列的组合)

frame1=pd.read_csv("Gamesa_G114 (Carlos Almeida)1.csv",index_col=['Dispositivo','Fecha'],sep=',',dtype='str')
frame2=pd.read_csv("Gamesa_G114 (Carlos Almeida).csv",index_col=['Dispositivo','Fecha'],sep=',',dtype='str')

两帧的快照

现在我正在执行外部连接

frame=pd.merge(left=frame1,right=frame2,left_index=True,right_index=True,how='outer',suffixes=('_left', '_right'))

但它给出了一个错误

TypeError:不可排序的类型:str() > float()

对于错误的堆栈跟踪http://pastebin.com/eWYfnMRT

如果我在读取 csv 时已经指定了 dtype='str',为什么会说 TypeError: unorderable types: str() > float()

我已经多次执行合并,但从未遇到过这种类型错误的问题。

发布编辑 帧信息

【问题讨论】:

  • frame1.info()frame2.info() 是什么?
  • 可能需要通过astype - frame1 = frame1.astype(str)frame2 = frame2.astype(str) 转换为str
  • @jezrael 它没有帮助
  • 我添加了框架信息
  • 有趣,看起来不错。 print (frame1.index.get_level_values(1).dtype)print (frame2.index.get_level_values(1).dtype) 呢?

标签: python pandas


【解决方案1】:

这可能不是您答案的解决方案,而是对 dtype 的评论

您需要在 dtype 中传递字典,例如{‘a’: np.float64, ‘b’: np.int32} 而不是字符串。

我正在使用答案空间来写这篇文章,因为我没有足够的评论权限。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-18
    • 2017-08-06
    • 2012-08-03
    • 2020-07-10
    • 2014-06-06
    • 1970-01-01
    • 2016-01-19
    • 1970-01-01
    相关资源
    最近更新 更多