Kla*_*sos 59 python dataframe pandas
我想为_x每个列名添加后缀,如下所示:
featuresA = myPandasDataFrame.columns.values + '_x'
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?另外,如果我想添加x_后缀,解决方案将如何变化?
Jar*_*zak 131
以下是我认为最好的添加后缀的方法.
df = df.add_suffix('_some_suffix')
Run Code Online (Sandbox Code Playgroud)
因为它是在DataFrame上调用并返回DataFrame的函数 - 您可以在调用链中使用它.
Ste*_*fan 82
你可以使用一种list理解:
df.columns = [str(col) + '_x' for col in df.columns]
Run Code Online (Sandbox Code Playgroud)
还有如内置的方法.add_suffix()和.add_prefix()在另一个答复中提到.
cs9*_*s95 14
如果您尝试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
Run Code Online (Sandbox Code Playgroud)
df.columns += '_some_suffix'
df
A_some_suffix B_some_suffix
0 9 12
1 4 7
2 2 5
3 1 4
Run Code Online (Sandbox Code Playgroud)
要添加前缀,您可以类似地使用
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
Run Code Online (Sandbox Code Playgroud)
另一个便宜的选择是使用带有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
Run Code Online (Sandbox Code Playgroud)
对于前缀,类似地,
df.columns = [f'some_prefix{c}' for c in df]
Run Code Online (Sandbox Code Playgroud)
在方法链接时也可以添加* 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
Run Code Online (Sandbox Code Playgroud)
这将返回数据的副本。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
Run Code Online (Sandbox Code Playgroud)
里面也没有修改df。
add_*fix如果您尝试执行方法链接,这些是好的方法:
df.some_method1().some_method2().add_*fix(...)
Run Code Online (Sandbox Code Playgroud)
但是,add_prefix(和add_suffix)创建整个数据框的副本,只是为了修改标题。如果您认为这样做很浪费,但仍然希望进行链接,则可以致电pipe:
def add_suffix(df):
df.columns += '_some_suffix'
return df
df.some_method1().some_method2().pipe(add_suffix)
Run Code Online (Sandbox Code Playgroud)
我知道向列名称添加后缀(或前缀)的 4 种方法:
1-df.columns = [str(col) + '_some_suffix' for col in df.columns]
或者
2-df.rename(columns= lambda col: col+'_some_suffix')
或者
3-df.columns += '_some_suffix'更容易。
或者,最好的:
3-df.add_suffix('_some_suffix')
DataFrame.renamedf = pd.DataFrame({'A': range(3), 'B': range(4, 7)})
print(df)
A B
0 0 4
1 1 5
2 2 6
Run Code Online (Sandbox Code Playgroud)
使用renamewithaxis=1和字符串格式:
df.rename('col_{}'.format, axis=1)
# or df.rename(columns='col_{}'.format)
col_A col_B
0 0 4
1 1 5
2 2 6
Run Code Online (Sandbox Code Playgroud)
要实际覆盖您的列名称,我们可以将返回的值分配给我们的df:
df = df.rename('col_{}'.format, axis=1)
Run Code Online (Sandbox Code Playgroud)
或使用inplace=True:
df.rename('col_{}'.format, axis=1, inplace=True)
Run Code Online (Sandbox Code Playgroud)
我还没有看到上面提出的这个解决方案,所以将其添加到列表中:
df.columns += '_x'
Run Code Online (Sandbox Code Playgroud)
您可以轻松适应前缀场景。
| 归档时间: |
|
| 查看次数: |
55367 次 |
| 最近记录: |