【发布时间】:2020-08-03 22:04:14
【问题描述】:
我正在尝试使用 .rename() 在我的数据框中重命名 pandas 中的列标题。
基本上,标题是:
column 1: "Country name[9]"
column 2: "Official state name[5]"
#etc.
我需要删除[number]。
我可以用一个函数来做到这一点:
def column(string):
for x, v in enumerate(string):
if v == '[':
return string[:x]
但我想知道如何将其转换为 lambda 函数以便我可以使用
df.rename(columns = lambda x: do same as function)
我以前从未使用过lambda 函数,所以我不确定让它正常工作的语法。
【问题讨论】:
-
df.columns.str.replace(r'\[\d+\]$', '')?....有关regex pattern的详细信息 -
我最终使用了这个函数:df.rename(columns = lambda p: column(p), inplace = True) 效果很好。由于某种原因,剥离功能似乎不起作用 - 可能是因为它有多个标题。
-
您可以在
lambda x: column(x)中使用您的函数,或者您将首先创建在else:中返回一些值的函数 -
顺便说一句:你可以写
df.rename(columns=column, inplace=True)而不是df.rename(columns=lambda p: column(p), inplace=True),因为columns=期望函数得到一个参数,而你的函数得到一个参数。