考虑:
问题:如何以仅返回非数字单元格的方式过滤此列?
代码示例:
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'] == ' ' ]
可以看出,数据集的列上有空格,该列应该是浮动的。
注意这个问题的前提是我们还不知道只有这些非浮点值。我们不知道其中有多少个或哪些非浮点值。
您的
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]