Python 熊猫:如何向数据帧中的所有整数列添加字符
我有一个数据帧c,如下所示:Python 熊猫:如何向数据帧中的所有整数列添加字符,python,pandas,Python,Pandas,我有一个数据帧c,如下所示: df = pd.DataFrame('x', index=range(3), columns=list('ab0123')) a b 0 1 2 3 0 x x x x x x 1 x x x x x x 2 x x x x x x a b a0 a1 a2 a3 0 x x x x x x 1
df = pd.DataFrame('x', index=range(3), columns=list('ab0123'))
a b 0 1 2 3
0 x x x x x x
1 x x x x x x
2 x x x x x x
a b a0 a1 a2 a3
0 x x x x x x
1 x x x x x x
2 x x x x x x
我想将列0,1,2,3转换为a0,a1,a2,a3,这样看起来如下所示:
df = pd.DataFrame('x', index=range(3), columns=list('ab0123'))
a b 0 1 2 3
0 x x x x x x
1 x x x x x x
2 x x x x x x
a b a0 a1 a2 a3
0 x x x x x x
1 x x x x x x
2 x x x x x x
我尝试了以下代码,但它没有更改列
c.select_dtypes([np.number]).columns = 't' + c.select_dtypes([np.number]).columns.astype(str)
您可以使用标头上定义的字符串方法:
cols = df.columns
np.where(cols.str.isdigit(), 'a' + cols, cols)
# array(['a', 'b', 'a0', 'a1', 'a2', 'a3'], dtype=object)
df.columns = np.where(cols.str.isdigit(), 'a' + cols, cols)
df
a b a0 a1 a2 a3
0 x x x x x x
1 x x x x x x
2 x x x x x x
或者@jpp的列表理解也很好
df.columns = [f'a{col}' if col.isdigit() else col for col in df]
# df.columns = ['a' + col if c.isdigit() else col for col in df]
df
a b a0 a1 a2 a3
0 x x x x x x
1 x x x x x x
2 x x x x x x
有点牵强,但它解决了问题。使用筛选器方法将数字标题列与数字标题列分开,将前缀('a')添加到数字标题列,并将concat数据帧返回。如前所述,这是一个延伸
pd.concat([df.filter(regex='[a-z]'),
df.filter(regex='\d').add_prefix('a')],
axis=1)
a b a0 a1 a2 a3
0 x x x x x x
1 x x x x x x
2 x x x x x x
df.columns=[f'a{col}if col.isdigit()else col for col in df]
可能工作正常您不应该使用select\u dtypes
,因为这会检查实际列的类型,而不是查看列标题本身。