You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GeoPandas中单元格字符串拼接出现异常结果的问题排查

问题:拼接GeoPandas列时出现\n1等异常内容的原因

我在处理事故数据时,尝试用GeoPandas拼接多个列的字符串,代码如下:

import geopandas as gp
accidents2020 = gp.read_file("Unfallorte2020_LinRef.shp")
accidents2020['joined'] = f"{accidents2020['ULAND']}{accidents2020['UREGBEZ']}{accidents2020['UKREIS']}{accidents2020['UGEMEINDE']}"

但生成的joined列出现了包含\n1的异常内容:

0         0         12\n1         12\n2         12\n3   ...
1         0         12\n1         12\n2         12\n3   ...
2         0         12\n1         12\n2         12\n3   ...
3         0         12\n1         12\n2         12\n3   ...
4         0         12\n1         12\n2         12\n3   ...

单独查看accidents2020['ULAND']列时显示正常:

0         12
1         12
2         12
3         12
4         12

请问这些\n1等异常内容来自何处?


解答

异常来源

你直接用f-string拼接GeoPandas的Series对象时,Python会调用Series的字符串打印方法(__str__),返回的是整个Series的格式化输出——包含索引、换行符和多行内容,而不是逐元素的字符串拼接。

比如str(accidents2020['ULAND'])的输出是:

0    12
1    12
2    12
...

里面的换行符\n和索引数字(比如1)就是你看到的\n1这类内容的来源。

正确的逐元素拼接方法

要用Pandas的向量化操作实现逐行拼接:

  • 方法一:转字符串后用+运算符
accidents2020['joined'] = (
    accidents2020['ULAND'].astype(str)
    + accidents2020['UREGBEZ'].astype(str)
    + accidents2020['UKREIS'].astype(str)
    + accidents2020['UGEMEINDE'].astype(str)
)
  • 方法二:使用str.cat()方法
cols_to_concat = [
    accidents2020['UREGBEZ'].astype(str),
    accidents2020['UKREIS'].astype(str),
    accidents2020['UGEMEINDE'].astype(str)
]
accidents2020['joined'] = accidents2020['ULAND'].astype(str).str.cat(cols_to_concat, sep='')
  • 方法三:用apply()逐行处理(适合复杂逻辑,性能略低)
accidents2020['joined'] = accidents2020.apply(
    lambda row: f"{row['ULAND']}{row['UREGBEZ']}{row['UKREIS']}{row['UGEMEINDE']}",
    axis=1
)

内容的提问来源于stack exchange,提问作者four-eyes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 13:15:21