python - Pandas 需要一个 Str 对象但收到一个浮点数
问题描述
我有一个看起来像这样的数据框:
df_all_data:
everything file_names
0  v_merged.sql
1 CREATE VIEW [dbo].[v_merged] v_merged.sql
2 AS v_merged.sql
3 WITH [stage] AS v_merged.sql
4 ( v_merged.sql
5 SELECT --[row] v_merged.sql
6 [fssa_legacysystemid] v_merged.sql
7 ,[A_ID] v_merged.sql
8 ,[vendorcode] v_merged.sql
9 ,NULL AS [lpinumber] v_merged.sql
我收到以下错误:
TypeError: ("descriptor 'startswith' requires a 'str' object but received a 'float'", 'occurred at index everything')
我不确定我做错了什么?我以为我的一切列是一个str
或object
类型?
编辑#1:
这是导致此错误的代码:
df_all_data = df_all_data[~df_all_data.applymap(lambda x : str.startswith(x,'--')).any(1)]
解决方案
既然 Pandas 已经找到float
了价值,那么它很有可能是真的。这些值可能为空,即NaN
/ np.nan
。str
一种简单的解决方法是在您的 lambda 函数中转换为:
df = df[~df.applymap(lambda x: str.startswith(str(x), '--')).any(1)]
一个更好的主意是转换为str
viapd.DataFrame.astype
和 usepd.Series.str
方法,它们完全模仿 Python 字符串方法:
df = df[df.astype(str).str.startswith('--').any(1)]
推荐阅读
- c - printf 以不同的方式表现...并获取地址和值....字符串的地址和指针仅在取消引用后
- java - 如何正确设置我的平截头体投影?
- sql-server - 用第 2 列的值替换第 1 列的值
- html - 如何使背景图像更暗,而不会使同一 div 中的其他图像“变暗”?
- arrays - 如何在不更新每一帧的数组的情况下处理动画图块?
- javascript - jquery 粘性th
- javascript - 将 JQuery MultiSelect 添加到现有的 MultiSelect 对象
- python - 如何在 matplotlib 中旋转 ticklabel_format?
- c# - 如何在C#中缩放GraphicsPath对象上的矩形或形状时修复图片框刷新时鼠标滚轮上下之间的延迟?
- node.js - 定期重启node express server