我是python的新手,我在过滤方面苦苦挣扎。 我正在python中运行以下命令:
DataFrame[(DataFrame.column1<2 & DataFrame.column2=='text')]
我得到的错误是
cannot compare a dtyped [object] array with a scalar of type [bool]
Column1是float64类型,而column2是object。 过滤器必须是两者的组合。
有什么想法吗?
答案 0 :(得分:1)
pd.DataFrame.__getitem__
或等效语法df[]
不允许布尔索引。相反,您应该使用pd.DataFrame.loc
。此外,您应在每个条件周围加上括号,以避免链式比较。例如:
mask = (df['column1'] < 2) & (df['column2'] == 'text')
df = df.loc[mask]
还请注意,您不应该为数据框命名DataFrame
,这会掩盖类名。
对于object
dtype,请注意,熊猫没有str
dtype,这些对象存储在object
dtype系列中。另请参见How to convert column with dtype as object to string in Pandas Dataframe。您无需进行任何转换,如果需要,可以使用df['column2'].astype(str) == 'text'
。
答案 1 :(得分:1)
这是您应使用的语法的简短示例
import pandas as pd
df = pd.DataFrame()
# filling both columns with data
df[(df['column1']<2) & (df['column2']=='text')]