我想在每个列名中添加_x
后缀,如下所示:
featuresA = myPandasDataFrame.columns.values + '_x'
我该怎么做?此外,如果我想添加x_
作为后缀,解决方案将如何改变?
发布于 2015-12-02 17:53:04
您可以使用list
理解:
df.columns = [str(col) + '_x' for col in df.columns]
还有一些内置的方法,如.add_suffix()
和.add_prefix()
,在另一个答案中已经提到了。
发布于 2016-01-29 15:37:21
在我看来,以下是添加后缀的最好方式。
df = df.add_suffix('_some_suffix')
因为它是一个在DataFrame上调用并返回DataFrame的函数,所以您可以在调用链中使用它。
发布于 2019-01-28 21:37:25
优雅的就地级联
如果您试图在本地修改df
,那么最便宜(也是最简单)的选项是直接在df.columns
上进行就地添加(即使用Index.__iadd__
)。
df = pd.DataFrame({"A": [9, 4, 2, 1], "B": [12, 7, 5, 4]})
df
A B
0 9 12
1 4 7
2 2 5
3 1 4
df.columns += '_some_suffix'
df
A_some_suffix B_some_suffix
0 9 12
1 4 7
2 2 5
3 1 4
若要添加前缀,请类似地使用
df.columns = 'some_prefix_' + df.columns
df
some_prefix_A some_prefix_B
0 9 12
1 4 7
2 2 5
3 1 4
另一种廉价的选择是使用带有f-string
格式的列表理解(可在python3.6+上获得)。
df.columns = [f'{c}_some_suffix' for c in df]
df
A_some_suffix B_some_suffix
0 9 12
1 4 7
2 2 5
3 1 4
而前缀,类似的,
df.columns = [f'some_prefix{c}' for c in df]
方法链接
还可以在方法链接时添加*修复。若要添加后缀,请使用DataFrame.add_suffix
df.add_suffix('_some_suffix')
A_some_suffix B_some_suffix
0 9 12
1 4 7
2 2 5
3 1 4
这将返回数据的副本。IOW,df
没有被修改。
添加前缀也是用DataFrame.add_prefix
完成的。
df.add_prefix('some_prefix_')
some_prefix_A some_prefix_B
0 9 12
1 4 7
2 2 5
3 1 4
也不修改df
。
add_*fix
批判
如果您试图执行方法链接,这些是很好的方法:
df.some_method1().some_method2().add_*fix(...)
但是,add_prefix
(和add_suffix
)创建了整个数据文件的副本,只是为了修改头文件。如果您认为这是浪费,但仍然想要链,您可以调用pipe
def add_suffix(df):
df.columns += '_some_suffix'
return df
df.some_method1().some_method2().pipe(add_suffix)
https://stackoverflow.com/questions/34049618
复制相似问题