目录
测试数据:test.csv
读取文件并将第一列设为索引:
data = pd.read_csv("F:/test.csv", index_col='Unnamed: 0')
1. 索引操作
1.1 直接使用行列索引(先列后行)
先行后列会报错:data['2022/3/17']['v_ma5'] 或 data[:1, :2]
1.2 结合loc或者iloc使用索引
loc:只能指定行列索引的名字
指定 2022/3/16 到 2022/3/18 的列 ma5的内容:
dd = data.loc['2022/3/16':'2022/3/18', 'ma5']
iloc可以通过索引的下标去获取
获取前3行、前5列的结果:
1.3 使用ix组合索引
获取行第1行到第4行,['ma10', 'ma20', 'v_ma5] 这3列的结果:
PS:新版本汇总已经将ix去掉,推荐使用loc和iloc来获取的方式:
data.loc[data.index[0:4], ['ma10', 'ma20', 'v_ma5']]
data.iloc[0:4, data.columns.get_indexer(['ma10', 'ma20', 'v_ma5'])]
2. 赋值操作
对DataFrame当中的 ma10 列进行重新赋值为1
# 直接修改原来的值
data['ma10'] = 1
# 或者
data.ma10 = 1
3. 排序
排序有两种形式,一种对于 索引 进行排序,一种对于 内容 进行排序
3.1 DataFrame排序
使用df.sort_values(by=, ascending=) 单个键或者多个键进行排序
参数注释:
- by:指定排序参考的键
- ascending:默认升序
- ascending=False:降序
- ascending=True:升序(默认)
示例:
# 按 ma10 正序
dd = data.sort_values(by="ma10")
dd = data.sort_values(by="ma10", ascending=True)
# 按 ma10 降序
dd = data.sort_values(by="ma10", ascending=False)
# 按多列排序
dd = data.sort_values(by=['ma5', 'ma10'])
使用df.sort_index给索引进行排序:
# 正序 dd = data.sort_index() # 降序 dd = data.sort_index(ascending=False)
3.2 Series排序
series只有一列,所以排序时不需要参数:
# 根据值 正序
dd = data['ma10'].sort_values()
dd = data['ma10'].sort_values(ascending=True)
# 降序
dd = data['ma10'].sort_values(ascending=False)
# 根据索引 正序
dd = data['ma10'].sort_index()
dd = data['ma10'].sort_index(ascending=True)
# 降序
dd = data['ma10'].sort_index(ascending=False)
总结:
- 1.索引
- 直接索引:先列后行,需要通过索引的字符串进行获取
- loc:先行后列,需要通过索引的字符串进行获取
- iloc:先行后列,通过下标进行索引
- ix:先行后列,新版Pandas已移除,可以用上面两种方法混合进行索引
- 2.赋值
- data['aaa'] = '内容'
- data.aaa = '内容'
- 3.排序
- dataframe
- 对象.sort_values()
- 对象.sort_index()
- series
- 对象.sort_values()
- 对象.sort_index()
- dataframe