我使用python 2.7和OSX操作系统,在pandas 0.16.2版本上读取csv文件中的数据如下:
import pandas as pd
data = pd.read_csv("my_csv_file.csv",sep='\t', skiprows=(0), header=(0))
< p > data.dtypes
的输出结果为:
name object
weight float64
ethnicity object
dtype: object
我原以为姓名和种族的类型应该是字符串类型,但在 Stack Overflow 上找到了关于为什么它们在新版本的 pandas 中是“对象”的原因。
现在,我想根据种族选取行,例如:
data[data['ethnicity']=='Asian']
Out[3]:
Empty DataFrame
Columns: [name, weight, ethnicity]
Index: []
我使用 data[data.ethnicity=='Asian']
或者 data[data['ethnicity']=="Asian"]
可以得到相同的结果。
但是当我尝试以下代码:
data[data['ethnicity'].str.contains('Asian')].head(3)
我得到了我想要的结果。
然而,我不想使用"contains",我想检查直接相等性。
请注意,data[data['ethnicity'].str=='Asian']
会引发错误。
我做错了什么吗?如何正确地做到这一点?
data.loc[data['ethnicity'].str.contains('Asian'), 'ethnicity'].head(3).tolist()
。它会帮助您查看字符串中是否有空格。 - unutbu