
Pandas数据框:基于指定列表筛选行和列
本文介绍如何利用Pandas库高效筛选数据框的行和列,筛选条件来自一个预定义的列表。
Pandas的isin()函数是实现此功能的关键。isin()函数用于判断Series中的元素是否包含在指定列表中。
步骤:
-
加载数据: 假设你的数据框命名为
df。 -
创建筛选列表: 创建一个包含需要筛选的名称的列表,例如
names_list = ['a1', 'a2']。 -
筛选行: 使用
isin()函数筛选包含指定名称的行:df[df['列名'].isin(names_list)]
将
列名替换为包含需要筛选名称的列名。此代码返回一个新的数据框,只包含列名中值属于names_list的行。 -
筛选列: 使用
filter()函数和正则表达式筛选包含指定名称的列:df.filter(regex="(^|\s)" + '|'.join(names_list) + "($|\s)", axis=1)
这行代码使用正则表达式,确保只选择列名完全匹配或包含
names_list中元素的列。axis=1指定操作的是列。
示例:
假设数据框df如下:
uid score other_col 0 a1 1 x 1 a2 4 y 2 b1 2 z 3 a3 3 w
以及names_list = ['a1', 'a2']。
则:
df[df['uid'].isin(names_list)]
将返回:
uid score other_col 0 a1 1 x 1 a2 4 y
而:
df.filter(regex="(^|\s)" + '|'.join(names_list) + "($|\s)", axis=1)
将返回:
uid 0 a1 1 a2 2 b1 3 a3
(注意:此例中,因为只有uid列包含names_list中的值,所以只返回uid列。如果其他列名也包含'a1'或'a2',则这些列也会被返回。)
通过以上方法,你可以灵活地根据指定的名称列表从Pandas数据框中筛选出所需的行和列。 记住根据你的实际数据调整列名和筛选列表。










