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中的示例。我添加了字节作为另一种类型,以防它们在字段中。