Python 使用Pandas中的列表删除dataframe中的行
这是一个关于使用列表过滤数据帧的通用问题。问题如下:Python 使用Pandas中的列表删除dataframe中的行,python,pandas,Python,Pandas,这是一个关于使用列表过滤数据帧的通用问题。问题如下: 我有一个数据帧df,带有一个列字段 我有一个禁用字段列表,例如ban_field=['field1'、'field2'、'field3'] banu字段的所有元素出现在df.field 目前,为了检索不带禁止字段的数据帧,我按照以下步骤进行操作: for f in ban_field: df = df[df.field!=f] 是否有一种更具python风格的方法(在一行中?)方法#1:使用isin和布尔数组选择器: In [4
- 我有一个数据帧
,带有一个列df
字段
- 我有一个禁用字段列表,例如
ban_field=['field1'、'field2'、'field3']
banu字段的所有元素出现在
df.field
for f in ban_field:
df = df[df.field!=f]
是否有一种更具python风格的方法(在一行中?)方法#1:使用isin
和布尔数组选择器:
In [47]: df = pd.DataFrame({"a": [2]*10, "field": range(10)})
In [48]: ban_field = [3,4,6,7,8]
In [49]: df[~df.field.isin(ban_field)]
Out[49]:
a field
0 2 0
1 2 1
2 2 2
5 2 5
9 2 9
[5 rows x 2 columns]
方法2:使用查询
:
In [51]: df.query("field not in @ban_field")
Out[51]:
a field
0 2 0
1 2 1
2 2 2
5 2 5
9 2 9
[5 rows x 2 columns]
您可以使用
isin
函数和否定(~
)运算符删除它
df[~df.field.isin(ban_field)]