Python 如何在dataframe列中仅保留字符串

Python 如何在dataframe列中仅保留字符串,python,pandas,Python,Pandas,我有一个包含许多公司特征的数据框架。 我的问题是,在“设施名称”列中,我发现有一些行具有浮点值,因此我想删除它们。为了做到这一点,我使用了下面一行似乎不起作用的代码: df = df[isinstance(df['Facility Name'], str)] 你知道怎么做吗?很接近了。这应该起作用: Python2.x: df = df[df['Facility Name'].apply(lambda x: isinstance(x, basestring))] Python3.x: df

我有一个包含许多公司特征的数据框架。 我的问题是,在“设施名称”列中,我发现有一些行具有浮点值,因此我想删除它们。为了做到这一点,我使用了下面一行似乎不起作用的代码:

df = df[isinstance(df['Facility Name'], str)]

你知道怎么做吗?

很接近了。这应该起作用:

Python2.x:

df = df[df['Facility Name'].apply(lambda x: isinstance(x, basestring))]
Python3.x:

df = df[df['Facility Name'].apply(lambda x: isinstance(x, (str, bytes)))]
下面是一些Python 3.x代码,您可以看到它是如何工作的:

In [1]: import pandas as pd

In [2]: import numpy as np

In [3]: df = pd.DataFrame({'Facility Name': [1, 0, None, 'Yes', 'No', 'Maybe So', b'what', np.nan, np.inf]})                                                         

In [4]: df                                                                                                                                                           
Out[4]: 
  Facility Name
0             1
1             0
2          None
3           Yes
4            No
5      Maybe So
6       b'what'
7           NaN
8           inf

In [5]: df[df['Facility Name'].apply(lambda x: isinstance(x, str))]                                                                                                  
Out[5]: 
  Facility Name
3           Yes
4            No
5      Maybe So

In [6]: df[df['Facility Name'].apply(lambda x: isinstance(x, (str, bytes)))]                                                                                         
Out[6]: 
  Facility Name
3           Yes
4            No
5      Maybe So
6       b'what'

我想你在结尾少了一个括号。@Outcast,真的。谢谢你的提示。另外,如果我没有遗漏什么,你可以为Python3.x添加正确的答案,即使用
str
而不是
basestring
)没错,我们需要一个Python 3.x中的示例。我添加了字节作为另一种类型,以防它们在字段中。