Панды Требуется объект Str, но получил плавающее

1

У меня есть dataframe, который выглядит так:

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)]
  • 2
    Вы, вероятно, есть NaN . Попробуйте df_all_data = df_all_data.fillna('') использовать df_all_data = df_all_data.fillna('')
Теги:
string
pandas
python-3.x

1 ответ

1
Лучший ответ

Так как Pandas обнаружил float значения, у него есть хороший шанс. Может быть, эти значения равны нулю, т.е. NaN/np.nan. Одним простым способом является преобразование в str в вашей лямбда-функции:

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

pd.DataFrame.astype идеей было бы преобразовать в str через pd.DataFrame.astype и использовать методы pd.Series.str, которые имитируют точно строковые методы Python:

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню