gpt4 book ai didi

python - Pandas 中的列重命名

转载 作者:太空宇宙 更新时间:2023-11-04 02:09:32 24 4
gpt4 key购买 nike

我有以下数据的 csv 文件:

id,number,id
132605,1,1
132750,2,1

Pandas 目前将其重命名为:

       id number id.1
0 132605 1 1
1 132750 2 1

有没有办法自定义重命名的方式?例如,我更喜欢:

           id number id2
0 132605 1 1
1 132750 2 1

最佳答案

重命名:使用句点分隔符

假设重复的列标签是列名称包含句点 (.) 的唯一实例,您可以将自定义函数与 pd.DataFrame.rename 结合使用:

from io import StringIO

file = """id,number,id
132605,1,1
132750,2,1"""

def rename_func(x):
if '.' not in x:
return x
name, num = x.split('.')
return f'{name}{int(num)+1}'

# replace StringIO(file) with 'file.csv'
df = pd.read_csv(StringIO(file))\
.rename(columns=rename_func)

print(df)

id number id2
0 132605 1 1
1 132750 2 1

csv.reader:稳健的解决方案

使用标准库中的 csv 模块可以实现稳健的解决方案:

from collections import defaultdict
import csv

# replace StringIO(file) with open('file.csv', 'r')
with StringIO(file) as fin:
headers = next(csv.reader(fin))

def rename_duplicates(original_cols):
count = defaultdict(int)
for x in original_cols:
count[x] += 1
yield f'{x}{count[x]}' if count[x] > 1 else x

df.columns = rename_duplicates(headers)

关于python - Pandas 中的列重命名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53939072/

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