如果单元格值不是数字,则遍历DataFrame列并删除一行

时间:2019-05-17 15:48:05

标签: python pandas

我将以下csv文件转换为DataFrame:

apartment,floor,gasbill,internetbill,powerbill
401,4,120,nan,340
409,4,190,50,140
410,4,155,45,180

我希望能够迭代每列,如果Internetbill列中的单元格的值不是数字,请删除整行。因此,在此示例中,将从DataFrame中删除“ 401,4,120,nan,340”行。

我以为这样的事情会起作用,但是我无济于事,被困住了

df.drop[df['internetbill'] == "nan"]

1 个答案:

答案 0 :(得分:1)

如果您使用的是pd.read_csv,那么该nan将作为np.nan导入。如果是这样,那么您需要dropna

df.dropna(subset=['internetbill'])

   apartment  floor  gasbill  internetbill  powerbill
1        409      4      190          50.0        140
2        410      4      155          45.0        180

如果出于任何原因这些都是字符串,则可以执行以下两项操作之一:

  1. replace

    df.replace({'internetbill': {'nan': np.nan}}).dropna(subset=['internetbill'])
    
  2. to_numeric

    df.assign(
        internetbill=pd.to_numeric(df['internetbill'], errors='coerce')
    ).dropna(subset=['internetbill'])