如果列名称包含,则熊猫获取列列表

时间:2019-01-07 12:02:27

标签: pandas

我编写了这段代码,以显示数据框中的列名列表(如果它们包含“ a”,“ b”,“ c”或“ d”)。

然后我想为这些列修剪列名的前3个字符。

但是它显示一个错误。代码有问题吗?

ind_cols= [x for x in df if df.columns[df.columns.str.contains('|'.join(['a','b','c','d']))]]

df[ind_cols].columns=df[ind_cols].columns.str[3:]

1 个答案:

答案 0 :(得分:1)

if-else使用列表理解:

L = df.columns[df.columns.str.contains('|'.join(['a','b','c','d']))]
df.columns = [x[3:] if x in L else x for x in df.columns]

通过布尔掩码使用numpy.where的另一种解决方案:

m = df.columns.str.contains('|'.join(['a','b','c','d']))
df.columns = np.where(m, df.columns.str[3:], df.columns)