Учитывать:
Вопрос: как отфильтровать этот столбец так, чтобы возвращались только нечисловые ячейки?
Пример кода:
url = ('https://ml-repository-krakers.s3-eu-west-1.amazonaws.com/','kaggle+/churn_modelling/Telco-Customer-Churn.csv')
df = pd.read_csv(url)
df['TotalCharges'][ df['TotalCharges'] == ' ' ]
Как можно видеть, в наборе данных есть пробелы в столбце, который должен быть плавающим.
Обратите внимание, что в вопросе предполагается, что мы еще не знаем, что существуют только эти неплавающие значения. Мы не знаем, сколько и какие значения, не являющиеся плавающими, там находятся.
@LukeL Добавил код по запросу. Вопрос возник в известном наборе данных, в котором имеется точно такая же проблема, как описанная теоретически в разделе «Рассмотрение».
@user19077881 user19077881 Все значения будут возвращены вашей лямбда-функцией, поскольку весь столбец имеет тип «объект», как указано в пункте 3 раздела «Рассмотрение». Так что предложенное решение не работает.
В вашем первоначальном вопросе говорилось, что у вас есть значения с плавающей запятой, отсюда и мой подход .map(lambda ...
. Но ваш отредактированный вопрос и предоставленные данные показывают, что в столбце есть только строковые значения, некоторые из которых могут представлять собой числа с плавающей запятой. С этим разъяснением ответ будет следующим. Кстати, обратите внимание, что тип object
может быть смешанным типом, а также строкой, поэтому мое первоначальное предложение сработало бы, если бы вы использовали смешанные типы с плавающей запятой и строки.
Ваш столбец TotalCharges
состоит только из строк, некоторые из которых представляют собой числа с плавающей запятой. Поэтому вам нужно найти строки со значениями, которые не представляют собой числа с плавающей запятой.
Для этого вам необходимо сформировать маску, попытавшись преобразовать значения в числовые. В приведенном ниже коде to_numeric
пытается это преобразование и из-за coerce
выдает значения NaN там, где это невозможно. Маска формируется путем проверки этих значений Nan. Эту маску затем можно использовать для выбора только этих строк:
import pandas as pd
url = ('https://ml-repository-krakers.s3-eu-west-1.amazonaws.com/'
'kaggle+/churn_modelling/Telco-Customer-Churn.csv')
df = pd.read_csv(url)
mask = pd.to_numeric(df['TotalCharges'], errors = 'coerce').isna()
df2 = df[mask]
print(df2)
дает:
customerID gender SeniorCitizen ... MonthlyCharges TotalCharges Churn
488 4472-LVYGI Female 0 ... 52.55 No
753 3115-CZMZD Male 0 ... 20.25 No
936 5709-LVOEQ Female 0 ... 80.85 No
1082 4367-NUYAO Male 0 ... 25.75 No
1340 1371-DWPAZ Female 0 ... 56.05 No
3331 7644-OMVMY Male 0 ... 19.85 No
3826 3213-VVOLG Male 0 ... 25.35 No
4380 2520-SGTTA Female 0 ... 20.00 No
5218 2923-ARZLG Male 0 ... 19.70 No
6670 4075-WKNIU Female 0 ... 73.35 No
6754 2775-SEFEE Male 0 ... 61.90 No
[11 rows x 21 columns]
Укажите код, с которым вы сейчас работаете, который не работает. Мы можем решить вашу проблему. Однако не стоит ожидать, что мы напишем за вас весь код.