吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 702|回复: 13
收起左侧

[求助] python新手自学pandas求助

[复制链接]
x61661 发表于 2024-8-2 16:11
想用python实现表格自动合并,用import chardet识别为文件的编码可能是:GB2312  救助

1.png

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
yonghuang + 1 + 1 谢谢@Thanks!

查看全部评分

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

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 编辑

抱歉没认真看描述,你已经判断了文件编码,无视后面的


引入chardet写个函数自动判断文件编码就行
[Python] 纯文本查看 复制代码
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
[Python] 纯文本查看 复制代码
# -*- 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([combined_data, df], 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
现在写代码,一边用编程教程完整入门,一边学用chatGPT表述问题,一边使用chatGPT给出编程参考。——非常好用!
helian147 发表于 2024-8-2 21:52
chardet检测的编码,pd读取csv也不准,即使读取了也是中文为乱码

[Python] 纯文本查看 复制代码
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]指定只读取第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给出编程参考。 ...

我其他专业的,第一个学就是python,刚刚安装好环境,代码是chat GPT给的。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-24 13:31

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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