如何删除所有列,但不首先删除以模式开头的列?

问题描述 投票:0回答:2

我有删除以spike开头的所有列的代码:

import pandas as pd

data = {'spike_starts1': [1,2,3], 'spike_starts2': [4,5,6], 'spike_starts3': [7,8,9], 'not': [10,11,12]}
df = pd.DataFrame(data)

df2 = df.drop(df.columns[df.columns.str.contains(pat = '^spike')].tolist() , axis=1).copy()

问题:如何修改上面的代码,使其离开以spike开头的第一列,但删除所有以spike开头的其他列?如果上面的代码很难修改,建议使用您自己的版本。

python pandas dataframe
2个回答
0
投票
(
    df.T.assign(flag=lambda x: x.index.str.slice(0,5))
    .drop_duplicates(subset='flag')
    .drop('flag',1)
    .T
)

0
投票

这可以通过更改.tolist()[1:]来实现,最终代码必须类似于:

import pandas as pd

data = {'spike_starts1': [1,2,3], 'spike_starts2': [4,5,6], 'spike_starts3': [7,8,9], 'not': [10,11,12]}
df = pd.DataFrame(data)

df2 = df.drop(df.columns[df.columns.str.contains(pat = '^spike')].tolist()[1:] , axis=1).copy()
© www.soinside.com 2019 - 2024. All rights reserved.