向pandas数据框添加分隔符

fhity93d  于 2023-08-01  发布在  其他
关注(0)|答案(1)|浏览(98)

Hello Stack Community!!
我在这里有一个初学者的问题,我是Python新手,并试图练习使用函数来使我的代码更干净。
我试图通过for循环修改df中的所有列名,并将这些新的分隔列名附加到列表中。我希望我可以使用该列表一次重命名所有列。
我知道我可以把这个打出来,把它Map成字典,但一定有更好的方法!
我的代码:
enter image description here
你可以看到不成功的输出。每个列名应该有一个'_'来分隔单词。
任何帮助都将不胜感激。
我试过几种方法,感觉好像错过了一些很简单的东西。我一直在努力通过我拥有的文档和自学资源。
为了提高速度,并试图在这个社区中变得更相关,我想我应该给予stackoverflow一个机会!

rsl1atfo

rsl1atfo1#

你的主要问题是你使用了一个内置的名称“list”作为一个参数,你从来没有在““上使用.split(),最后你附加了原始的名称变量,因为你没有在.join()之后重新分配。
你可以将列表理解与.split().join()一起使用,并将返回列表分配给df.columns:
假数据:

import pandas as pd

data = {"Foo Spam": [1, 2, 3], "Ham Eggs": [4, 5, 6]}
RAW_edu = pd.DataFrame(data=data)

字符串
让你的代码工作:

def add_delimiter(cols: list) -> list:
    d = "_"
    delimited_cols = []
    for name in cols:
        name = d.join(name.split(" "))
        delimited_cols.append(name)
    return delimited_cols

RAW_edu.columns = add_delimiter(cols=RAW_edu.columns)
print(RAW_edu)


使用生成器和列表comp代码:

def add_delimiter(cols: list) -> list:
    return ["_".join(iter(x.split(" "))) for x in cols]

RAW_edu.columns = add_delimiter(cols=RAW_edu.columns)
print(RAW_edu)


输出量:

Foo_Spam  Ham_Eggs
0         1         4
1         2         5
2         3         6

相关问题