原始数据为 csv 文件。

data
'''
date,temperature,humidity
07/01/21,95,50
07/02/21,94,55
07/03/21,94,56
'''

一、读取时指定索引列

默认索引从0开始,可通过 index_col设置索引列。

import os
os.chdir(r'C:\Users\111\Desktop')

import pandas as pd
import numpy as np

# 指定时间索引
data = pd.read_csv('data.csv', 
                   parse_dates=['date'], # 指定时间类型
                   index_col='date') 

# 默认索引
data2 = pd.read_csv('data.csv', 
                   parse_dates=['date']) # 指定时间类型

二、使用现有 DataFrame 设置索引

通过 set_index手动设置索引。

data2.set_index('date', inplace=True, drop=False)
  • set_index 方法重新创建对象
  • inplace=True 可就地修改原对象
  • drop=False 保留被设置索引的列

三、操作之后重设索引 reset_index

数据切片之后索引顺序混乱,可通过 reset_index重新生成连续索引。

'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
data3 = pd.DataFrame(np.random.rand(5, 3), columns=list('ABC'))
'''
           A         B         C team
x1  0.490674  0.441180  0.061497    x
x2  0.623639  0.467407  0.579566    x
y1  0.442860  0.660843  0.688015    y
y2  0.671548  0.833954  0.365685    y
y3  0.755017  0.367738  0.801497    y
'''
data4 = data3[data3.index % 2 == 0]
data4.reset_index(drop=True, inplace=True)
  • drop=True 不保留原索引
  • inplace=True 就地重置原对象

四、分组 groupby 之后索引设置为列

分组之后分组列默认作为索引index,可重置为列。

# 添加列
data3['team'] = ['x','x','y','y','y']

# 分组之后重设索引
data3.groupby('team').mean().reset_index()

# 设置 as_index=False
data3.groupby('team', as_index=False).mean()

五、排序后重置索引

sort_values 排序之后索引顺序混乱。

'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
data3.sort_values(by='A')
data3.sort_values(by='A', ignore_index=True)

六、删除重复后重置索引

同排序后重设索引。

data3.drop_duplicates('team', ignore_index=True)

七、索引直接赋值

可通过 index 直接赋值已有 dataframe 。

better_index = ['x1','x2','y1','y2','y3']
data3.index = better_index

八、写入文件 to_csv 时忽略索引

data3.to_csv('data3.csv', index=False)
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐