gpt4 book ai didi

python - 使用 glob.glob 时从重复轴错误重新索引

转载 作者:行者123 更新时间:2023-12-01 08:12:22 29 4
gpt4 key购买 nike

当我尝试运行此代码时:

import pandas as pd
import glob
files = [pd.read_excel(p, skipfooter=1) for p in glob.glob("path/*.xlsx")]
df = files[0].append([files[i] for i in range(1,len(files))])
df.loc[(df[df.columns[6]] == 2002040041),'New Column'] = df[df.columns[2]]

我收到以下错误:

ValueError Traceback (most recent call last) in

---> 5 df.loc[(df[df.columns[6]] == 2002040041),'New Column'] = df[df.columns[2]]

ValueError: cannot reindex from a duplicate axis

但是,当我编写.csv,然后读取它时,问题就解决了。

import pandas as pd
import glob
files = [pd.read_excel(p, skipfooter=1) for p in glob.glob("path/*.xlsx")]
df = files[0].append([files[i] for i in range(1,len(files))])
df.to_csv("file.csv", encoding='utf-8-sig')
df = pd.read_csv("file.csv")
df.loc[(df[df.columns[6]] == 2002040041),'New Column'] = df[df.columns[2]]

如果我改用 df.to_excel,错误仍然存​​在。

为什么会出现这个错误?如何在不编写 .csv 文件的情况下解决这个问题?每个文件中的所有列名称均相同且彼此不同。

最佳答案

您需要通过reset_index(drop=True)设置默认索引:

df = df.reset_index(drop=True)

或者通过DataFrame.append中的参数ignore_index=True :

df = files[0].append([files[i] for i in range(1,len(files))], ignore_index=True)  

那么代码应该简化:

df.loc[df.iloc[:, 6] == 2002040041, 'New Column'] = df.iloc[:, 2]

关于python - 使用 glob.glob 时从重复轴错误重新索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55161377/

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