吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1958|回复: 11
收起左侧

[求助] Python pandas循环输入CSV并合并的问题

[复制链接]
cqwcns 发表于 2020-12-4 23:29
如下代码要实现的是输入CSV文件,并合并,显然我的代码【#循环输入新派文件数据并合并】,pandas循环输入时如何合并数据,请指教,谢谢。

[Python] 纯文本查看 复制代码
#!/usr/bin/python
# -*- coding: UTF-8 -*-

import os
import numpy as np
import pandas as pd

# 声明源数据路径
pathSourceData = "源数据"
# 声明新派、在途和归档3个文件列表
listFilesNewDistribution = []
listFilesOnTheWay = []
listFilesClosedLoop = []

# 获得源数据文件夹的全部文件名称,并对CSV文件进行分类
dirSourceData = os.listdir(pathSourceData)
for file in dirSourceData:
    if os.path.splitext(file)[1] == ".csv":
        if "新派" in file:
            listFilesNewDistribution.append(file)
        elif "在途" in file:
            listFilesOnTheWay.append(file)
        elif "归档" in file:
            listFilesClosedLoop.append(file)

print(listFilesNewDistribution)
print(listFilesOnTheWay)
print(listFilesClosedLoop)

# 循环输入新派文件数据并合并
sheetNewDistribution = ""
for i in listFilesNewDistribution:
    sheetTemp = pd.read_csv(pathSourceData + "\\" + i, encoding='gbk')
    sheetNewDistribution = pd.concat(sheetNewDistribution, sheetTemp)

print(sheetNewDistribution)

微信图片_20201204232721.png

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
niushengsan + 1 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

qq353324582 发表于 2020-12-5 00:15
他这不是说是str类型么,你print(type)一下看看listFilesNewDistribution这几个东西是啥类型,要不要给他转换一下。我也是新手,不过类似的bug我都是这么排除的
liujg 发表于 2020-12-5 08:05
sheetNewDistribution应该是pandas类型对象,不应该是str类型。
super谦 发表于 2020-12-5 09:19
这个问题我猜就是你不能把一个空的字符串和一个表拼接,你要拿一个表和一个表拼接,先把第一个表拿出来,再遍历拼接,把后面的改一下就可以了,改成这样试试
# 循环输入新派文件数据并合并
count = 0
for i in listFilesNewDistribution:
    if count == 0:
        sheetNewDistribution = pd.read_csv(pathSourceData + "\\" + i, encoding='gbk')
        count += 1
    else:
        sheetTemp = pd.read_csv(pathSourceData + "\\" + i, encoding='gbk')
        sheetNewDistribution = pd.concat(sheetNewDistribution, sheetTemp)
print(sheetNewDistribution)
luxingyu329 发表于 2020-12-5 09:31
我看完之后表示还没有到这么高的水平!
 楼主| cqwcns 发表于 2020-12-5 09:45
super谦 发表于 2020-12-5 09:19
这个问题我猜就是你不能把一个空的字符串和一个表拼接,你要拿一个表和一个表拼接,先把第一个表拿出来,再 ...

报错:

Traceback (most recent call last):
  File "D:/python/pyJieDuanTongBao/pyJieDuanTongBao.py", line 38, in <module>
    sheetNewDistribution = pd.concat(sheetNewDistribution, sheetTemp)
  File "D:\Program Files\anaconda\envs\playData\lib\site-packages\pandas\core\reshape\concat.py", line 274, in concat
    op = _Concatenator(
  File "D:\Program Files\anaconda\envs\playData\lib\site-packages\pandas\core\reshape\concat.py", line 309, in __init__
    raise TypeError(
TypeError: first argument must be an iterable of pandas objects, you passed an object of type "DataFrame"
super谦 发表于 2020-12-5 09:58
你试试改成这样,就是concat两个表合并加框框框住
sheetNewDistribution = pd.concat([sheetNewDistribution, sheetTemp])
super谦 发表于 2020-12-5 09:58
cqwcns 发表于 2020-12-5 09:45
报错:

Traceback (most recent call last):

你试试改成这样,就是concat两个表合并加框框框住
sheetNewDistribution = pd.concat([sheetNewDistribution, sheetTemp])
daxionglyly 发表于 2020-12-5 10:18
厉害  厉害  非常的厉害
 楼主| cqwcns 发表于 2020-12-5 10:24
super谦 发表于 2020-12-5 09:58
你试试改成这样,就是concat两个表合并加框框框住
sheetNewDistribution = pd.concat([sheetNewDistribu ...

应该是这个问题,我刚刚也自己写了一下,这样可以。

[Python] 纯文本查看 复制代码
#!/usr/bin/python
# -*- coding: UTF-8 -*-

import os
import numpy as np
import pandas as pd
from openpyxl import Workbook

# 声明源数据路径
pathSourceData = "源数据"
# 声明新派、在途和归档3个文件列表
listFilesNewDistribution = []
listFilesOnTheWay = []
listFilesClosedLoop = []

# 获得源数据文件夹的全部文件名称,并对CSV文件进行分类
dirSourceData = os.listdir(pathSourceData)
for file in dirSourceData:
    if os.path.splitext(file)[1] == ".csv":
        if "新派" in file:
            listFilesNewDistribution.append(file)
        elif "在途" in file:
            listFilesOnTheWay.append(file)
        elif "归档" in file:
            listFilesClosedLoop.append(file)

print(listFilesNewDistribution)
print(listFilesOnTheWay)
print(listFilesClosedLoop)

# ###循环输入新派文件数据###
# 如果有新派数据,就先输入第一个,再循环输入剩余的并合并
if len(listFilesNewDistribution) < 1:
    print("[错误] 未找到新派源数据")
else:
    # 先输入第1个数据
    sheetNewDistribution = pd.read_csv(pathSourceData + "\\" + listFilesNewDistribution[0], encoding='gbk')

    # 循环输入剩余的数据并合并
    for i in range(len(listFilesNewDistribution) - 1):
        i += 1
        sheetTemp = pd.read_csv(pathSourceData + "\\" + listFilesNewDistribution[i], encoding='gbk')
        sheetNewDistribution = pd.concat([sheetNewDistribution, sheetTemp])

    print(sheetNewDistribution)
    print("[操作] 输出新派EXCEL表")
    sheetNewDistribution.to_excel('xlsxNewDistribution.xlsx', sheet_name='mySheet', encoding="utf_8_sig", index=False)
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 09:34

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表