x61661 发表于 2024-8-2 16:11

python新手自学pandas求助

想用python实现表格自动合并,用import chardet识别为文件的编码可能是:GB2312救助

oo829 发表于 2024-8-2 16:23

看下pd.contact()方法,专门用来合并Dataframe对象的,可以按行,也可以按列合并

Talent0725 发表于 2024-8-2 16:34

为什么不直接贴代码

Benx1 发表于 2024-8-2 16:55

本帖最后由 Benx1 于 2024-8-2 16:58 编辑

抱歉没认真看描述,你已经判断了文件编码,无视后面的
https://static.52pojie.cn/static/image/hrline/1.gif

引入chardet写个函数自动判断文件编码就行
import chardet

def detect_encoding(file_path):
    with open(file_path, 'rb') as file:
      raw_data = file.read()
    result = chardet.detect(raw_data)
    encoding = result['encoding']
    return encoding


    encoding = detect_encoding(file_path)
    with open(file_path, 'r', encoding=encoding) as file:
      content = file.read()

bu^shan 发表于 2024-8-2 17:42

# -*- coding: utf-8 -*-
import pandas as pd
import glob
import chardet


def detect_encoding(file_path):
    with open(file_path, 'rb') as f:
      raw_data = f.read()
    result = chardet.detect(raw_data)
    return result['encoding']

file_paths = glob.glob(r'D:\python\jzmj\1.*.csv')

combined_data = pd.DataFrame()


for file_path in file_paths:

    encoding = detect_encoding(file_path)

    df = pd.read_csv(file_path, encoding=encoding, usecols=lambda column: column not in ["名次", "rank", "Rank"])

    combined_data = pd.concat(, ignore_index=True)


combined_data.to_csv(r'D:\python\jzmj\combined_data.csv', index=False)

print("数据已成功汇总并保存到 r'D:\\python\\jzmj\\combined_data.csv'")

regusrzfa44 发表于 2024-8-2 21:36

{:1_896:}现在写代码,一边用编程教程完整入门,一边学用chatGPT表述问题,一边使用chatGPT给出编程参考。——非常好用!

helian147 发表于 2024-8-2 21:52

chardet检测的编码,pd读取csv也不准,即使读取了也是中文为乱码

def detect_encoding(input_file):
        with open(input_file, 'rb') as f:
                data = f.readline()
        return chardet.detect(data)['encoding']

def read_csv(input_file):
        encode = detect_encoding(input_file)
        encodes = ['iso-8859-1','utf-8', encode,'utf-16', 'utf-8-sig', 'GB2312', 'big5', 'latin1', 'ANSI']
        for encode in encodes:
                try:
                        with open(input_file, 'r', encoding=encode) as f:
                                df = pd.read_csv(f, header=None, usecols=cellNum)

                        break
                except UnicodeError or UnicodeDecodeError:
                        continue

header=None            将第一行作为数据读取,不作为列名读取
usecols=[]                  指定读取的列例如,指定只读取第0列,第2列

BTFKM 发表于 2024-8-5 08:59

如果已经确定文件主题的编码形式 建议在open()里加error="ignore" 或者"replace",
读文件 是这个样子得啦 得过且过, 爬个网页编码能搞成脑淤血

x61661 发表于 2024-8-5 10:37

Talent0725 发表于 2024-8-2 16:34
为什么不直接贴代码

第一次发帖子,不知道还能发代码,下次知道了。

x61661 发表于 2024-8-5 10:40

regusrzfa44 发表于 2024-8-2 21:36
现在写代码,一边用编程教程完整入门,一边学用chatGPT表述问题,一边使用chatGPT给出编程参考。 ...

{:1_905:}我其他专业的,第一个学就是python,刚刚安装好环境,代码是chat GPT给的。
页: [1] 2
查看完整版本: python新手自学pandas求助