gpt4 book ai didi

python - Pandas:高效地对列名进行大量修改

转载 作者:太空狗 更新时间:2023-10-30 02:08:42 26 4
gpt4 key购买 nike

如何避免样板代码对数据框列进行大量修改。

可重现的例子:

data = {'Subject Id': ['1', '2', '3'],
'First-Name': ['Alex', 'Amy', 'Allen'],
'Last, name': ['Anderson', 'Ackerman', 'Ali']}

df = pd.DataFrame(data, columns = ['Subject Id', 'First-Name', 'Last, name'])

df

    Subject Id  First-Name  Last, name
0 1 Alex Anderson
1 2 Amy Ackerman
2 3 Allen Ali

要清理列名,我通常会这样做:

df.columns = [l.lower() for l in df.columns]
df.columns = [s.replace('-', ' ') for s in df.columns]
df.columns = [d.replace(',', ' ') for d in df.columns]

但有时我需要进行的修改远远超过 3 处。有没有办法将这些操作链接在一起或以其他方式更有效地执行此操作?

最佳答案

您可以调用向量化的 .str方法并将这些调用链接到您的列上,这里我们使用 str.lowerstr.replace :

In [91]:
df.columns = df.columns.str.lower().str.replace('-|,', ' ')
df

Out[91]:
subject id first name last name
0 1 Alex Anderson
1 2 Amy Ackerman
2 3 Allen Ali

还请注意,没有什么可以阻止您将所有内容组合在一个列表理解中:

In [93]:
df.columns = [l.lower().replace('-', ' ').replace(',',' ') for l in df.columns]
df

Out[93]:
subject id first name last name
0 1 Alex Anderson
1 2 Amy Ackerman
2 3 Allen Ali

对于如此少的列,列表理解可能会更快:

时间

In [96]:
%timeit [l.lower().replace('-', ' ').replace(',',' ') for l in df.columns]
%timeit df.columns.str.lower().str.replace('-|,', ' ')

100000 loops, best of 3: 5.26 µs per loop
1000 loops, best of 3: 284 µs per loop

关于python - Pandas:高效地对列名进行大量修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41509244/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com