我编写了这段代码,以显示数据框中的列名列表(如果它们包含“ 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:]
答案 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)