cqwcns 发表于 2022-3-9 11:58

python pandas追加数据的问题

我写了一个代码,功能是汇总excel表。
所以首先我按照需要的字段,创建了一个空的DataFrame。


然后循环追加表。
代码如下:
import pandas as pd
import os
import datetime
os.system('cls')
print('hello world')
source_path = r'D:\pythonfiles\用后即评合并'
files = os.listdir(source_path)

df = pd.DataFrame(columns=['号码', 'CRM订单号', '星级', '装维工号',
                  '装维姓名', '评价时间', 'CRM订单时间', '评价时间', 'CRM订单时间', '业务类型'])

for file in files:
    this_file = source_path + '\\' + file
    print('正在读取:' + file)
    df_temp = pd.read_excel(this_file, sheet_name='开通省评价清单', usecols=[
                            '号码', 'CRM订单号', '星级', '装维工号', '装维姓名', '评价时间', 'CRM订单时间', '评价时间', 'CRM订单时间', '业务类型'])
    print(df_temp)

    df = pd.concat(, ignore_index=False)

但报错如下:
Traceback (most recent call last):
File "d:\OneDrive\code\python\yonghoujiping\play.py", line 19, in <module>
    df = pd.concat(, ignore_index=False)
File "C:\Users\candyissupersweet\AppData\Local\Programs\Python\Python310\lib\site-packages\pandas\util\_decorators.py", line 311, in wrapper
    return func(*args, **kwargs)
File "C:\Users\candyissupersweet\AppData\Local\Programs\Python\Python310\lib\site-packages\pandas\core\reshape\concat.py", line 359, in concat
    return op.get_result()
File "C:\Users\candyissupersweet\AppData\Local\Programs\Python\Python310\lib\site-packages\pandas\core\reshape\concat.py", line 588, in get_result
    indexers = obj_labels.get_indexer(new_labels)
File "C:\Users\candyissupersweet\AppData\Local\Programs\Python\Python310\lib\site-packages\pandas\core\indexes\base.py", line 3721, in get_indexer
    raise InvalidIndexError(self._requires_unique_msg)
pandas.errors.InvalidIndexError: Reindexing only valid with uniquely valued Index objects

不知道是什么原因,请大佬指教,谢谢。



d8349565 发表于 2022-3-9 12:15

第19行read excel参数里面选择headers=0删除usecol试试看
问题点报错内容翻译:重新索引仅对唯一值的索引对象有效

ligfoo 发表于 2022-3-9 14:38

pd.read_excel函数返回结果已经是DataFrame了,在concat的时候,不用再强转了吧,报错信息是重新索引的时候发送了重复值,需要改ignore_index=True

heartblade 发表于 2022-3-9 15:36

手机号还是打码吧

rsnodame 发表于 2022-3-9 15:57

感觉可以不用concat,先用 append方法合并试试
append方法也比较适合放循环里,concat一次性把列表里的df合并更效率
页: [1]
查看完整版本: python pandas追加数据的问题