python - 根据条件重命名熊猫数据框的多列
问题描述
我有一个 df,我需要将 40 个列名重命名为空字符串。这可以通过使用来实现.rename()
,但我需要提供dict中的所有列名,需要重命名。我正在寻找一些更好的方法来通过一些模式匹配来重命名列。在列名中找到 NULL/UNNAMED 的任何位置,将其替换为空字符串。
df1:原始df(在实际df中,我有大约20列作为NULL1-NULL20和20列作为UNNAMED1-UNNAMED20)
NULL1 NULL2 C1 C2 UNNAMED1 UNNAMED2
0 1 11 21 31 41 51
1 2 22 22 32 42 52
2 3 33 23 33 43 53
3 4 44 24 34 44 54
所需的输出df:
C1 C2
0 1 11 21 31 41 51
1 2 22 22 32 42 52
2 3 33 23 33 43 53
3 4 44 24 34 44 54
这可以通过
df.rename(columns={'NULL1':'', 'NULL2':'', 'UNNAMED1':'', 'UNNAMED2':''}, inplace=True)
但我不想创建包含 40 个元素的长字典
解决方案
如果你想坚持rename
:
def renaming_fun(x):
if "NULL" in x or "UNNAMED" in x:
return "" # or None
return x
df = df.rename(columns=renaming_fun)
如果映射函数变得更复杂,它会很方便。否则,列表推导会:
df.columns = [renaming_fun(col) for col in cols]
另一种可能:
df.columns = map(renaming_fun, df.columns)
但正如已经提到的,用空字符串重命名不是你通常会做的事情。
推荐阅读
- c# - ASP.NET MVC - DB EntityValidation 和模型状态冲突
- azure-devops - AzureDevops Winappdriver如何设置DontShowUI
- sas - SAS - 如何将列名作为值获取到另一列(基于其值作为条件)
- excel - 我想检测包含特定值的第一列和最后一列
- python - Windows:ImportError:DLL 加载失败(python、sklearn)
- python-3.x - 读取子文件夹中的 Excel 文件以及如何使用子文件夹名称作为新列值?
- jenkins - Artifactory 没有缓存来自 https://registry.npmjs.org 404 Not Found 的一些 npm 包]
- c++ - 为什么这个 constexpr 不会产生错误?
- r - 更改 `gtsummary::tbl_regression` 列
- .net - 我有一个使用 .net 和 Visual Studio 创建的 setup.exe,我想更改默认文件夹的权限