我有一个 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)
但正如已经提到的,使用空字符串重命名并不是您通常会做的事情。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)