【问题标题】:Pandas Requires a Str object but received a floatPandas 需要一个 Str 对象但收到一个浮点数
【发布时间】:2018-08-23 16:26:49
【问题描述】:

我有一个如下所示的数据框:

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')

我不确定我做错了什么?我以为我的一切列是strobject 类型?

编辑#1:

这是导致此错误的代码:

df_all_data = df_all_data[~df_all_data.applymap(lambda x : str.startswith(x,'--')).any(1)]

【问题讨论】:

  • 你可能有NaN。首先尝试使用df_all_data = df_all_data.fillna('')

标签: python string python-3.x pandas


【解决方案1】:

既然 Pandas 找到了 float 值,那么它很有可能是真的。这些值可能为空,即NaN / np.nan。一种简单的解决方法是在 lambda 函数中转换为 str

df = df[~df.applymap(lambda x: str.startswith(str(x), '--')).any(1)]

一个更好的主意是通过pd.DataFrame.astype 转换为str 并使用pd.Series.str 方法,这完全模仿了Python 字符串方法:

df = df[df.astype(str).str.startswith('--').any(1)]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-29
    • 2018-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多