我想为_x
每个列名添加后缀,如下所示:
featuresA = myPandasDataFrame.columns.values + '_x'
我该怎么做呢?另外,如果我想添加x_
后缀,解决方案将如何变化?
以下是我认为最好的添加后缀的方法.
df = df.add_suffix('_some_suffix')
因为它是在DataFrame上调用并返回DataFrame的函数 - 您可以在调用链中使用它.
你可以使用一种list
理解:
df.columns = [str(col) + '_x' for col in df.columns]
还有如内置的方法.add_suffix()
和.add_prefix()
在另一个答复中提到.
如果您尝试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]
在方法链接时也可以添加* fix。要添加后缀,请使用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)