我有一个如下所示的数据框:
Y2000 Y2001 Y2002 Item Item Code
34 43 65 12 Test
我想提取列Y2000,Y2001,Y2002和Item。我不想提取物品代码'柱。如何在不明确指定列名的情况下执行此操作,因为我在完整数据框中有大量列?现在,我正在使用filter命令,但它对我不起作用:
df.filter(like='Y|Item')
它只返回一个空数据框
答案 0 :(得分:1)
根据filter
的文档,您需要regex
参数:
df.filter(regex='Y|Item$')
将保留满足re.search(regex, col) == True
的列。 like
版本对列名称执行子字符串搜索,这就是为什么在提供类似正则表达式的输入(例如'Y|Item'
)时它不起作用的原因。
答案 1 :(得分:1)
IIUC然后您可以使用正则表达式模式:
In [2]:
df = pd.DataFrame(columns=['Y2000','Y2001','Y2002','Item','Item Code'])
df
Out[2]:
Empty DataFrame
Columns: [Y2000, Y2001, Y2002, Item, Item Code]
Index: []
In [8]:
df.filter(regex='^Y\d{4}$|^Item$')
Out[8]:
Empty DataFrame
Columns: [Y2000, Y2001, Y2002, Item]
Index: []
所以^Y\d{4}$|^Item$
寻找' Y'在开始时跟随4位数字,然后在此处终止,并停止$
'项目'在开始和结束时停止$