python pandas合并Sheet,处理列乱序和出现Unnamed列的解决

使用python中的pandas,xlrd,openpyxl库完成合并excel中指定sheet的操作

# -*- coding: UTF-8 -*-
import xlrd
import pandas as pd
from pandas import DataFrame
from openpyxl import load_workbook

#表格位置
excel_name = '1.xlsx'
# 获取workbook中所有的表格
wb = xlrd.open_workbook(excel_name)
#获取sheets
sheets = wb.sheet_names()

# 循环所需sheet
newdata = DataFrame()
#in后()里填写需要合并的sheet页数
for i in (3,4,5):
  df = pd.read_excel(excel_name, sheet_name=(i-1), header = None,index_col=0,encoding='utf-8')
  newdata = newdata.append(df,ignore_index = False)
#保存为新的sheet,首先新建sheet,合并后的数据保存到新sheet中
writer = pd.ExcelWriter('1.xlsx',engin='openpyxl')
book = load_workbook(writer.path)
writer.book = book
#利用dataframe.to_excel保存合并后的数据到新的sheet,生成新的sheet命名为newdata
newdata.to_excel(excel_writer=writer,sheet_name="newdata")
writer.save()
writer.close()
print('处理完成!')

其中

df = pd.read_excel(excel_name, sheet_name=(i-1), header = None,index_col=0,encoding='utf-8')

需要指定 header = None,否则会出现如下warning:

FutureWarning: Sorting because non-concatenation axis is not aligned. A future version

of pandas will change to not sort by default.

并且生成的新sheet中的列会出现乱序以及Unnamed列。

补充:pandas 中读取和写入csv文件时候出现Unnamed:0的解决方案

在读取csv文件的时候,默认会自动添加新的一列,Unnamed:0

解决方案:

read_csv()时候,设置index_col=0即可。

在写入csv文件的时候,默认会自动加入新的一列,Unnamed:0

解决方案:

to_csv()时候,设置index=False。或者加上index=True, index_label="id"

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

时间: 2021-03-27

python pandas dataframe 按列或者按行合并的方法

concat 与其说是连接,更准确的说是拼接.就是把两个表直接合在一起.于是有一个突出的问题,是横向拼接还是纵向拼接,所以concat 函数的关键参数是axis . 函数的具体参数是: concat(objs,axis=0,join='outer',join_axes=None,ignore_index=False,keys=None,levels=None,names=None,verigy_integrity=False) objs 是需要拼接的对象集合,一般为列表或者字典 axis=0 是

Python pandas实现excel工作表合并功能详解

import os,pandas as pd,re #1.获取文件夹下要合并的文件名 dirpath = '文件夹地址' #工作表3特殊处理 需要开始下标和结束下标 begin = 231 end = 238 excel_names = os.listdir(dirpath) #2.获取文件内容 sheet_1_merge = [] sheet_2_merge = [] sheet_3_merge = pd.DataFrame([0,0,0,0,0,0,0]) for excel_name in

解决Python pandas df 写入excel 出现的问题

学习Python数据分析挖掘实战一书时,在数据预处理阶段,有一节要使用拉格朗日插值法对缺失值补充,代码如下: #-*- coding:utf-8 -*- import pandas as pd import matplotlib.pyplot as plt from scipy.interpolate import lagrange#导入拉格朗日插值函数 inputfile="catering_sale.xls" outputfile="H:\python\file\pyth

在python中pandas的series合并方法

如下所示: In [3]: import pandas as pd In [4]: a = pd.Series([1,2,3]) In [5]: b = pd.Series([2,3,4]) In [6]: c = pd.DataFrame([a,b]) In [7]: c Out[7]: 0 1 2 0 1 2 3 1 2 3 4 不过pandas直接用列表生成dataframe只能按行生成,如果是字典可以按列生成,比如: In [8]: c = pd.DataFrame({'a':a,'b'

Python中pandas模块DataFrame创建方法示例

本文实例讲述了Python中pandas模块DataFrame创建方法.分享给大家供大家参考,具体如下: DataFrame创建 1. 通过列表创建DataFrame 2. 通过字典创建DataFrame 3. 通过Numpy数组创建DataFrame DataFrame这种列表式的数据结构和Excel工作表非常类似,其设计初衷是讲Series的使用场景由一维扩展到多维. DataFrame由按一定顺序的多列数据组成,各列的数据类型可以有所不同(数值.字符串.布尔值). Series对象的Ind

python中pandas库中DataFrame对行和列的操作使用方法示例

用pandas中的DataFrame时选取行或列: import numpy as np import pandas as pd from pandas import Sereis, DataFrame ser = Series(np.arange(3.)) data = DataFrame(np.arange(16).reshape(4,4),index=list('abcd'),columns=list('wxyz')) data['w'] #选择表格中的'w'列,使用类字典属性,返回的是S

python中pandas.DataFrame排除特定行方法示例

前言 大家在使用Python进行数据分析时,经常要使用到的一个数据结构就是pandas的DataFrame,关于python中pandas.DataFrame的基本操作,大家可以查看这篇文章. pandas.DataFrame排除特定行 如果我们想要像Excel的筛选那样,只要其中的一行或某几行,可以使用isin()方法,将需要的行的值以列表方式传入,还可以传入字典,指定列进行筛选. 但是如果我们只想要所有内容中不包含特定行的内容,却并没有一个isnotin()方法.我今天的工作就遇到了这样的需

在python中pandas读文件,有中文字符的方法

后面要加encoding='gbk' import pandas as pd datt=pd.read_csv('D:\python_prj_1\data_1.txt',encoding='gbk') print(datt) 以上这篇在python中pandas读文件,有中文字符的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

在python中使用xlrd获取合并单元格的方法

处理excel表格的时候经常遇到合并单元格的情况,使用xlrd中的merged_cells的方法可以获取当前文档中的所有合并单元格的位置信息. import xlrd xls = xlrd.open_workbook('test.xls') sh = xls.sheet_by_index(0) 读取excel并读取第一页的内容. for crange in sh.merged_cells: rs, re, cs, ce = crange merged_cells返回的是一个列表,每一个元素是合并

Python 中pandas索引切片读取数据缺失数据处理问题

引入 numpy已经能够帮助我们处理数据,能够结合matplotlib解决我们数据分析的问题,那么pandas学习的目的在什么地方呢? numpy能够帮我们处理处理数值型数据,但是这还不够 很多时候,我们的数据除了数值之外,还有字符串,还有时间序列等 比如:我们通过爬虫获取到了存储在数据库中的数据 比如:之前youtube的例子中除了数值之外还有国家的信息,视频的分类(tag)信息,标题信息等 所以,numpy能够帮助我们处理数值,但是pandas除了处理数值之外(基于numpy),还能够帮助我

python中pandas.DataFrame对行与列求和及添加新行与列示例

本文介绍的是python中pandas.DataFrame对行与列求和及添加新行与列的相关资料,下面话不多说,来看看详细的介绍吧. 方法如下: 导入模块: from pandas import DataFrame import pandas as pd import numpy as np 生成DataFrame数据 df = DataFrame(np.random.randn(4, 5), columns=['A', 'B', 'C', 'D', 'E']) DataFrame数据预览: A

Python 中pandas.read_excel详细介绍

Python 中pandas.read_excel详细介绍 #coding:utf-8 import pandas as pd import numpy as np filefullpath = r"/home/geeklee/temp/all_gov_file/pol_gov_mon/downloads/1.xls" #filefullpath = r"/home/geeklee/temp/all_gov_file/pol_gov_mon/downloads/26368f3

基于Python中numpy数组的合并实例讲解

Python中numpy数组的合并有很多方法,如 - np.append() - np.concatenate() - np.stack() - np.hstack() - np.vstack() - np.dstack() 其中最泛用的是第一个和第二个.第一个可读性好,比较灵活,但是占内存大.第二个则没有内存占用大的问题. 方法一--append parameters introduction arr 待合并的数组的复制(特别主页是复制,所以要多耗费很多内存) values 用来合并到上述数组