Pandas 合并 TypeError:“NoneType”类型的对象没有 len()
Posted
技术标签:
【中文标题】Pandas 合并 TypeError:“NoneType”类型的对象没有 len()【英文标题】:Pandas merge TypeError: object of type 'NoneType' has no len() 【发布时间】:2018-06-11 22:09:51 【问题描述】:我正在尝试使用 pandas 合并 left_on 和 right_on 参数。 根据Documentation 1和Documentation 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()
【问题讨论】:
【参考方案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吗?以上是关于Pandas 合并 TypeError:“NoneType”类型的对象没有 len()的主要内容,如果未能解决你的问题,请参考以下文章
Pandas 合并错误 TypeError:“int”和“str”实例之间不支持“>”