【发布时间】:2017-11-28 22:47:43
【问题描述】:
我想使用 rename 函数重命名 Pandas 数据框中的列,因此我想将名称(字符串)拆分为字符串中的大写字母。 例如,我的列名类似于“FooBar”或“SpamEggs”,其中一列称为“Monty-Python”。我的目标是列名,如“foo_bar”、“spam_eggs”和“monty_python”。
我知道
'-'.join(re.findall('[A-Z][a-z]*', 'FooBar'))
会给我
Foo-Bar
但这不能包含在我的 rename 函数中:
df.rename(columns=lambda x: x.strip().lower().replace("-", "_"), inplace=True)
(应该在 strip 和 lower 之间,但会返回语法错误)。
谁能帮我将sn-p 包含到rename 或帮我找到除findall 之外的其他解决方案吗?
【问题讨论】:
-
您可能会发现创建一个包含重命名功能的函数
def rename(name)比尝试将其全部塞进一个 lambda 更容易。然后你可以做df.rename(columns=rename, inplace=True)。这将使转换更简单,并使您的代码更具可读性。
标签: python regex pandas dataframe