python - 如何查找“+: Long Str 不支持的操作数类型”发生在哪一行?
问题描述
当我尝试添加两个字符串列以创建新列时,我正在尝试在 Python Pandas 中调试我的程序。该程序具有以下回溯:“-:'int'和'str'不支持的操作数类型”在我将数据类型更改为 之后df['ColA']=df.ColA.astype(str)
,问题就解决了。因此,我认为可能有一(或几)行有整数。我需要找到导致问题的行,因为这里有几百万行。
ID colA colB
1 apple USA
2 Banana Japan
3 Pear 5
4 Peach China
df['ColA_ColB'] = vre_df['ColA'] + "_" + df['ColB']
下面解决问题,但我需要知道是哪一行导致了问题(或不是str
)
df['ColA_ColB'] = df['ColA'].astype(str) + "_" + df['ColB'].astype(str)
寻找打印 ColB 不是的行号的方法str
。(例如 3 个)
更清楚地说,我如何生成 ColB 或 ColA 的值不是字符串的子集表。例如 ID colA colB
3 梨 5
另一个问题是,使用现有的数据集,是否有一种快速的方法可以将“'”符号添加到数据集中的数字行(例如'5)?
解决方案
applymap
可能不是最快的,但它会使工作完成如下:
m = df[['colA', 'colB']].applymap(type).ne(str).any(axis=1)
df[m]
Out[472]:
ID colA colB
2 3 Pear 5
推荐阅读
- pandas - 可以在分层索引中使用 loc[] 的整数索引吗?
- javascript - 如何解决 python 烧瓶服务器响应 js 中的跨域问题?
- angular - 角度双向绑定问题
- visual-studio-code - 结合 Remote-SSH 扩展启动外部终端
- python - 即使类被实例化,assert_call() 也会引发异常
- laravel - Nuxtjs + Laravel Echo + Laravel Passport + Laravel WebSockets 无法从私人/状态通道获取事件
- r - R 在 purrr::map 中使用 dplyr::mutate() 而不复制行
- ios - Firebase Cloud Messaging 通知未显示在 iOS 设备上(前台和后台)
- excel - 用 5-10 秒刷新每个 Excel 表
- java - Java Arrays.binarySearch 在二维 int[][] 上使用 Comparator.comparingInt()