时间索引就是根据时间来对时间格式的字段进行数据选取的一种索引方式
1 索引是时间格式的DataFrame结构
import pandas as pd
import numpy as np
index = pd.DatetimeIndex(
['2018-01-01', '2018-01-02', '2018-01-03', '2018-01-04', '2018-01-05', '2018-01-06', '2018-01-07',
'2018-01-08', '2018-01-09', '2018-01-10', "2019-03-23", "2019-05-03","2019-09-15", "2020-05-14"])
data = pd.DataFrame(np.arange(1, 15), columns=["num"], index=index)
print(data)
result:
num
2018-01-01 1
2018-01-02 2
2018-01-03 3
2018-01-04 4
2018-01-05 5
2018-01-06 6
2018-01-07 7
2018-01-08 8
2018-01-09 9
2018-01-10 10
2019-03-23 11
2019-05-03 12
2019-09-15 13
2020-05-14 14
1.1 获取2019年的数据
index = pd.DatetimeIndex(
['2018-01-01', '2018-01-02', '2018-01-03', '2018-01-04', '2018-01-05', '2018-01-06', '2018-01-07', '2018-01-08', '2018-01-09', '2018-01-10', "2019-03-23", "2019-05-03","2019-09-15", "2020-05-14"])
data = pd.DataFrame(np.arange(1, 15), columns=["num"], index=index)
print(data.loc['2019'])
result:
num
2019-03-23 11
2019-05-03 12
2019-09-15 13
1.2 获取2018年1月的数据
index = pd.DatetimeIndex(
['2018-01-01', '2018-01-02', '2018-01-03', '2018-01-04', '2018-01-05', '2018-01-06', '2018-01-07', '2018-01-08', '2018-01-09', '2018-01-10', "2019-03-23", "2019-05-03","2019-09-15", "2020-05-14"])
data = pd.DataFrame(np.arange(1, 15), columns=["num"], index=index)
print(data.loc['2018-01'])
result:
num
2018-01-01 1
2018-01-02 2
2018-01-03 3
2018-01-04 4
2018-01-05 5
2018-01-06 6
2018-01-07 7
2018-01-08 8
2018-01-09 9
2018-01-10 10
1.3 获取2018年1月1日到2018年1月5日的数据
index = pd.DatetimeIndex(
['2018-01-01', '2018-01-02', '2018-01-03', '2018-01-04', '2018-01-05', '2018-01-06', '2018-01-07', '2018-01-08', '2018-01-09', '2018-01-10', "2019-03-23", "2019-05-03","2019-09-15", "2020-05-14"])
data = pd.DataFrame(np.arange(1, 15), columns=["num"], index=index)
print(data.loc['2018-01-01': "2018-01-05"])
result:
num
2018-01-01 1
2018-01-02 2
2018-01-03 3
2018-01-04 4
2018-01-05 5
1.4 获取2019年3月23日的数据
index = pd.DatetimeIndex(
['2018-01-01', '2018-01-02', '2018-01-03', '2018-01-04', '2018-01-05', '2018-01-06', '2018-01-07', '2018-01-08', '2018-01-09', '2018-01-10', "2019-03-23", "2019-05-03","2019-09-15", "2020-05-14"])
data = pd.DataFrame(np.arange(1, 15), columns=["num"], index=index)
print(data.loc['2019-03-23': "2019-03-23"])
result:
num
2019-03-23 11
2 索引不是时间格式的DataFrame结构
此时所用的表格内容如下:
先来看一下原始的数据
import pandas as pd
df = pd.read_excel(r'C:\Users\admin\Desktop\测试.xlsx')
print(df)
result:
姓名 年龄 性别 入职时间 职位
0 张三 25 男 2019-09-23 销售
1 安迪 32 女 2016-06-14 总监
2 王二 67 男 2020-03-08 后勤
3 李二 45 男 2018-09-17 销售经理
2.1选取成交时间为2018年9月17日的订单
import pandas as pd
from datetime import datetime
df = pd.read_excel(r'C:\Users\admin\Desktop\测试.xlsx')
print(df[df['入职时间'] == datetime(2018, 9, 17)])
result:
姓名 年龄 性别 入职时间 职位
3 李二 45 男 2018-09-17 销售经理
2.2 选取成交时间为2019年10月1日以后的订单
df = pd.read_excel(r'C:\Users\admin\Desktop\测试.xlsx')
print(df[df['入职时间'] > datetime(2019, 9, 15)])
result:
姓名 年龄 性别 入职时间 职位
0 张三 25 男 2019-09-23 销售
2 王二 67 男 2020-03-08 后勤
2.3 选取成交时间为2019年1月1日以前的订单
df = pd.read_excel(r'C:\Users\admin\Desktop\测试.xlsx')
print(df[df['入职时间'] < datetime(2019, 1, 1)])
result:
姓名 年龄 性别 入职时间 职位
1 安迪 32 女 2016-06-14 总监
3 李二 45 男 2018-09-17 销售经理
2.4 选取成交时间为2018年1月1日到2020年1月1日的订单
df = pd.read_excel(r'C:\Users\admin\Desktop\测试.xlsx')
print(df[(df['入职时间'] > datetime(2018, 1, 1)) & (df['入职时间'] < datetime(2020, 1, 1))])
result:
姓名 年龄 性别 入职时间 职位
0 张三 25 男 2019-09-23 销售
3 李二 45 男 2018-09-17 销售经理