index_col的用法

读取excel文件 read_excel

1.index_col 默认值(index_col = None)——重新设置一列成为index值
2.index_col=False——重新设置一列成为index值
3.index_col=0——第一列为index值
在这里插入图片描述
index_col=0,将第一列变为index。

 

读取csv文件 read_csv

lines = pd.read_csv(checkin_filename, sep='\t', header=None,names=col_names, parse_dates=[1], skip_blank_lines=True, index_col=0).reset_index()
dateparse = lambda dates: pd.datetime.strptime(dates, '%Y-%m')
data = pd.read_csv('AirPassengers.csv', parse_dates='Month', index_col='Month',date_parser=dateparse)
参数:

skiprows=2,表示前面两行[0, 1]都不读入,等价于skiprows=[0, 1];

header=None第0行不作为列名;

names=[''] 指定列名;

parse_dates=[]  解析指定行为date类型;

index_col=0   指定某列为行索引,否则自动索引0, 1, .....。reset_index()是其反操作。

parse_dates:这是指定含有时间数据信息的列。正如上面所说的,列的名称为“月份”。
index_col:使用pandas 的时间序列数据背后的关键思想是:目录成为描述时间数据信息的变量。所以该参数告诉pandas使用“月份”的列作为索引。
date_parser:指定将输入的字符串转换为可变的时间数据。Pandas默认的数据读取格式是‘YYYY-MM-DD HH:MM:SS’。如需要读取的数据没有默认的格式,就要人工定义。这和dataparse的功能部分相似,这里的定义可以为这一目的服务。[python模块 - 时间模块 ]

converters : dict, default None: Dict of functions for converting values in certain columns. Keys can eitherbe integers or column labels.将数据某列按特定函数转化,必然可以取代自定义时date_parser和parse_dates两个参数呀。

如解析时间时想返回时间戳的浮点数表示时:

def dateParse(s): return float(__import__('datetime').datetime.timestamp(__import__('dateutil.parser').parser.parse(s)))
df = pd.read_csv(os.path.join(CA_DATASET_DIR, checkin_ca), header=0, sep='\t', converters={'Time(GMT)': dateParse})
[Reading from a csv file]

Note: 读取速度比numpy.loadtxt快多了,近10倍,包括转换成list的时间。

出错信息

pandas.errors.ParserError: Error tokenizing data. C error: Buffer overflow caught - possible malformed input file.

解决:the cause was that there were some carriage returns "\r" in the data that pandas was using as a line terminator as if it was "\n". I thought I'd post here as that might be a common reason this error might come up.The solution I found was to add lineterminator='\n' into the read_csv function。

# Reading data from web

data_url="https://raw.githubusercontent.com/alstat/Analysis-with-Programming/master/2014/Python/Numerical-Descriptions-of-the-Data/data.csv"

df =pd.read_csv(data_url)

写入csv文件Writing to a csv file

data_df.to_csv(path,index=False)
在参数中加上index=False,否则写入的数据会默认加上index,大多数是没有用的。

你可能感兴趣的:(index_col的用法)