如何一次删除多栏位(rows)

我的DataFrame资料名为df的话,
我的资料里面有一列是[“Rating”] , 我想要把这一列转成dtype:float64。
但是遇到一个问题就是它显示一个error, ValueError: could not convert string to float: 'Jacksonville, FL'
于是我就想把所有有'Jacksonville, FL'的rows删除。
我的作法是用过滤 df[df['Rating']=='Jacksonville FL'], 我找到它在哪些rows下有'Jacksonville, FL'。
但是下一步我就不会了, 我要怎么删除这些有'Jacksonville, FL'的rows??
麻烦帮助我。

很简单
df.drop(df.index[df['Rating']=='Jacksonville FL'],inplace=True)
不过我觉得应该还可以这样,转换类型的时候过滤掉不是数字的行。就不用再删除了,删除我觉得不是好的选择。有可能还有很多其它的字符串,你不可能一一去找出来是啥!

df['Rating']=pd.to_numeric(df['Rating'],errors='ignore')
根据数据的具体情况转换为int64或float64
不是数字的行就忽略了。

使用 df = df[df['Rating'] !='Jacksonville, FL']就将Jacksonville, FL的行删掉了,后面直接操作df就可以了

是不是你的数据源本身有 问题导致报错?

看提示,本身就是string 不 能转 float的情况;可能确认是数据的影响。

查询的时候过滤掉非数值的记录,然后再进行转换

删除全部是一种方式,这篇博文也是提出了另外一种方式:https://blog.csdn.net/Echo_Code/article/details/113819599

应该是字符串和数值转换的问题吧

方法一:
pandas 具有矢量化字符串操作,因此您可以过滤掉包含您不想要的字符串的行:

In [91]: df = pd.DataFrame(dict(A=[5,3,5,6], C=["foo","bar","fooXYZbar", "bat"]))

In [92]: df
Out[92]:
   A          C
0  5        foo
1  3        bar
2  5  fooXYZbar
3  6        bat

In [93]: df[~df.C.str.contains("XYZ")]
Out[93]:
   A    C
0  5  foo
1  3  bar
3  6  bat

方法二:如果您的字符串约束不仅仅是一个字符串,您可以使用以下命令删除相应的行:

df = df[~df['your column'].isin(['list of strings'])]
或者进
searchfor = ['john', 'doe']
df = df[~df.col.str.contains('|'.join(searchfor))]

参考一下