创建文件:
import pandas as pd df = pd.DataFrame() # DataFrame实例 df.to_csv('C:/Temp/output.csv') #save to file
在文件里写入:
df = pd.DataFrame( {'ID':[1,2,3],'name':['Tim','Vector','Jim'] } ) df.to_csv('C:/Temp/output.csv') #to save file print(df)
输出:
我们可以看到这里的输出0 1 2是DataFrame的默认索引,若我们要将df里的ID作为索引怎么办?
df = df.set_index('ID')
读取文件:
path = r'C:\Users\mdz\Desktop\Temp\People.xlsx' people = pd.read_excel(path) print(people.head())
情况一:若是文件有点“脏”
再执行上面的读入代码得到的输出就会是这样啦:
因为pandas读取文件时默认用第0行作为header,所以我们可以通过设置参数来解决
people = pd.read_excel(path,header=1)
情况二:我们的文件没有header
运行:
输出:
这样肯定是不对的!
也是通过设置header的参数,header = None即读Excel的时候不要设置任何的header
people = pd.read_excel(path, header= None)
输出:
也不对啊,我们需要人为的设置colums的名字
path = r'C:\Users\mdz\Desktop\Temp\People.xlsx' people = pd.read_excel(path,header=None) people.columns = ['ID','Type','Title','FirstName', 'MiddleName', 'LastName'] print(people.columns)
输出:
并将它保存在output文件中
path1 =r'C:\Users\mdz\Desktop\Temp\output.xlsx' people.to_excel(path1)
打开文件,列名'ID', 'Type', 'Title', 'FirstName', 'MiddleName', 'LastName'已经添加上去了,但是我们发现index也打印出来了,有两种方法去掉前面的index。
1、
people.set_index('ID')
这样会生成新的DataFrame
2、
people.set_index('ID',inplace=True)
就在原来的DataFrame里改,而不生成新的DataFrame
运行print(people.columns)
输出:
我们可以发现columns里没有‘ID’啦,因为在DataFrame里index 和 columns是分开来对待的
我们如果在读取文件时知道哪一列时index,可以通过参数指定
people = pd.read_excel(path,index_col='ID')
在学习文件读入的时候,由于更改文件的后缀名出现了:
pandas.errors.ParserError: Error tokenizing data. C error: Buffer overflow caught - possible malformed input file.
解决方法:https://blog.csdn.net/qq_41338877/article/details/86761434