2024-06-28 11:22:09 发布
网友
我有一个数据帧,看起来像这样:
Y2000 Y2001 Y2002 Item Item Code 34 43 65 12 Test
我要提取Y2000、Y2001、Y2002和Item列。我不想提取“项目代码”列。在不显式指定列名的情况下,如何做到这一点,因为我在完整的数据帧中有大量的列?现在,我正在使用filter命令,但它对我无效:
它只返回一个空的数据帧
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位数字,然后在这里以stop$'Item'结尾,在结尾处$
^Y\d{4}$|^Item$
$
根据^{}的文档,您需要regex参数:
regex
df.filter(regex='Y|Item$')
其中满足re.search(regex, col) == True的列将被保留。like版本对列名执行子字符串搜索,这就是为什么在提供类似regex的输入(如'Y|Item')时它不起作用。在
re.search(regex, col) == True
like
'Y|Item'
IIUC然后可以使用正则表达式模式:
因此
^Y\d{4}$|^Item$
在开始处查找'Y',后跟4位数字,然后在这里以stop$
'Item'结尾,在结尾处$
根据^{} 的文档,您需要
regex
参数:其中满足
re.search(regex, col) == True
的列将被保留。like
版本对列名执行子字符串搜索,这就是为什么在提供类似regex的输入(如'Y|Item'
)时它不起作用。在相关问题 更多 >
编程相关推荐