如果它以某个单词开头,是否可以更改pandas数据框中列的名称.
ee如果列以DEP开头,则将全名更改为KEEP.
[col for col in df if col.startswith('DEP') then KEEP].
Run Code Online (Sandbox Code Playgroud)
是否可行,但不推荐,因为获取重复的列名称:
df = pd.DataFrame({
'DEP1':list('abcdef'),
'B':[4,5,4,5,5,4],
'C':[7,8,9,4,2,3],
'DEP2':list('aaabbb')
})
print (df)
DEP1 B C DEP2
0 a 4 7 a
1 b 5 8 a
2 c 4 9 a
3 d 5 4 b
4 e 5 2 b
5 f 4 3 b
df.columns = ['KEEP' if col.startswith('DEP') else col for col in df]
print (df)
KEEP B C KEEP
0 a 4 7 a
1 b 5 8 a
2 c 4 9 a
3 d 5 4 b
4 e 5 2 b
5 f 4 3 b
Run Code Online (Sandbox Code Playgroud)
那么如果选择列,KEEP它将返回DataFrame中的所有重复列:
print (df['KEEP'])
KEEP KEEP
0 a a
1 b a
2 c a
3 d b
4 e b
5 f b
Run Code Online (Sandbox Code Playgroud)
因此,如果要过滤所有列,请DEP使用filter正则表达式^来启动字符串:
df1 = df.filter(regex='^DEP')
#alternative solution
#df1 = df.loc[:, df.columns.str.startswith('DEP')]
print (df1)
DEP1 DEP2
0 a a
1 b a
2 c a
3 d b
4 e b
5 f b
Run Code Online (Sandbox Code Playgroud)
您可以将可调用对象传递给 rename
df.rename(columns=lambda x: 'KEEP' if x.startswith('DEP') else x)
Run Code Online (Sandbox Code Playgroud)
您可以将其重新分配给名称,df也可以使用inplace=True参数。
| 归档时间: |
|
| 查看次数: |
1371 次 |
| 最近记录: |