【问题标题】:Pandas merge TypeError: object of type 'NoneType' has no len()Pandas 合并 TypeError:“NoneType”类型的对象没有 len()
【发布时间】:2018-06-11 22:09:51
【问题描述】:

我正在尝试使用 pandas 合并 left_on 和 right_on 参数。 根据Documentation 1Documentation 2

文档 1:指出 left_on 和 right_on 是要在左/右 DataFrame 中加入的字段名称。 文档 2:左侧 DataFrame 中用作 keys

的列

是什么意思?

以下文档 1:

left_frame = pd.DataFrame({'key': range(5),
                       'left_value': ['a', 'b', 'c', 'd', 'e']})
right_frame = pd.DataFrame({'key': range(2,7),
                       'right_value': ['f', 'g', 'h', 'i', 'j']})

我这样做了:

df = pd.merge(left_frame,right_frame,how='right',right_on='key')

left_frame 有 'key' 作为字段名,但它返回了

TypeError: object of type 'NoneType' has no len()

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    看来你需要:

    df = pd.merge(left_frame, right_frame, how='right', on='key')
    

    因为左右列名相同。

    如果列名不同:

    df = pd.merge(left_frame, right_frame, how='right', right_on='key1', left_on='key2')
    

    是什么意思?

    如果检查merge:

    on:标签或列表

    要加入的字段名称。必须在两个 DataFrame 中都可以找到。如果 on 为 None 且不合并索引,则默认在列的交集处合并。

    这意味着要加入的列中的值。

    【讨论】:

    • 是的,或者需要right_on='key'left_index=True
    • 但是需要index左df匹配值,所以需要df = pd.merge(left_frame.set_index('key'),right_frame, how='right', right_on='key', left_index=True)
    • 我能说left_on和right_on是用来合并具有相同列但列名不同的dfs吗?
    猜你喜欢
    • 1970-01-01
    • 2021-03-03
    • 2015-07-30
    • 1970-01-01
    • 2018-08-14
    • 2016-06-06
    • 1970-01-01
    • 2021-06-14
    • 1970-01-01
    相关资源
    最近更新 更多