一 set_index()函数

1 主要是理解drop和append参数,注意与reset_index()参数的不同.

import pandas as pd

df = pd.DataFrame({'a': range(4),
'b': range(4, 0, -1),
'c': ['one', 'one', 'two', 'two'],
'd': ['a','b','c','d']}) print(df)
# a b c d
# 0 0 4 one a
# 1 1 3 one b
# 2 2 2 two c
# 3 3 1 two d # set_index()的drop参数默认为True,如下即默认将普通列c列置为索引列后,将原先的普通列c列删除.
# 注意它与reset_index()的drop不同,reset_index()中的drop默认为False,且这个drop为True时,删除的是原先的index列
df.set_index(['c'], inplace=True)
print(df)
# a b d
# c
# one 0 4 a
# one 1 3 b
# two 2 2 c
# two 3 1 d # append参数为True,会保留原先的索引,为False时,新设置的索引会覆盖原先的索引,它类似与reset_index()中的drop.
df.set_index(['b'], inplace=True, append=True)
print(df)
# a d
# c b
# one 4 0 a
# 3 1 b
# two 2 2 c
# 1 3 d

二 reset_index()函数

1 重置索引后,drop参数默认为False,想要删除原先的索引列要置为True.想要在原数据上修改要inplace=True.特别是不赋值的情况必须要加,否则drop无效.

all_user_repay.reset_index(drop=True,inplace=True)
df1 = pd.DataFrame({'A': ['A0', 'A1'],
'B': ['B0', 'B1'],
'C': ['C0', 'C1'],
'D': ['D0', 'D1']})
df2 = pd.DataFrame({'A': ['A4', 'A5'],
'B': ['B4', 'B5'],
'C': ['C4', 'C5'],
'D': ['D4', 'D5']})
frames = [df1, df2]
result = pd.concat(frames)
print(result.reset_index())
# index A B C D
# 0 0 A0 B0 C0 D0
# 1 1 A1 B1 C1 D1
# 2 0 A4 B4 C4 D4
# 3 1 A5 B5 C5 D5
print(result.reset_index(drop=True))
# A B C D
# 0 A0 B0 C0 D0
# 1 A1 B1 C1 D1
# 2 A4 B4 C4 D4
# 3 A5 B5 C5 D5

Series.reset_index()

注意参数level默认移除原先的全部索引,即将原先的全部索引都置为普通列.

如果给level赋值,则只有所赋值的索引列置为普通列,其余的留下做索引列.

参考:http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.reset_index.html?highlight=reset_index#pandas.Series.reset_index

arrays = [np.array(['bar', 'bar', 'baz', 'baz']),
np.array(['one', 'two', 'one', 'two'])]
s2 = pd.Series(
range(4), name='foo',
index=pd.MultiIndex.from_arrays(arrays,
names=['a', 'b']))
print(s2)
#这里如果想要保留修改不能用inplace参数,只能再赋给另一个引用
print(s2.reset_index(level='a'))
print(s2.reset_index())
print(type(s2))
# a b
# bar one 0
# two 1
# baz one 2
# two 3
# Name: foo, dtype: int64
# a foo
# b
# one bar 0
# two bar 1
# one baz 2
# two baz 3
# a b foo
# 0 bar one 0
# 1 bar two 1
# 2 baz one 2
# 3 baz two 3
# <class 'pandas.core.series.Series'>

2 把某一列设为索引列

df.set_index('列名',inplace=True)

set_index()与reset_index()函数的更多相关文章

  1. 区别 |python-pandas库set_index、reset_index用法区别

    1.set_index() 作用:DataFrame可以通过set_index方法,将普通列设置为单索引/复合索引. 格式:DataFrame.set_index(keys, drop=True, a ...

  2. pandas的set_index和reset_index方法

    import pandas as pd data = pd.DataFrame(np.arange(1,10).reshape(3,3),index=["a","b&qu ...

  3. pandas set_index和reset_index的用法

    1.set_index DataFrame可以通过set_index方法,可以设置单索引和复合索引. DataFrame.set_index(keys, drop=True, append=False ...

  4. python set_index与reset_index的妙用

  5. 从Excel到Python:最常用的36个Pandas函数

    本文涉及pandas最常用的36个函数,通过这些函数介绍如何完成数据生成和导入.数据清洗.预处理,以及最常见的数据分类,数据筛选,分类汇总,透视等最常见的操作. 生成数据表 常见的生成数据表的方法有两 ...

  6. 关于Excel,你一定用的到的36个Python函数

    从Excel到Python:最常用的36个Pandas函数关于Excel,你一定用的到的36个Python函数 本文涉及pandas最常用的36个函数,通过这些函数介绍如何完成数据生成和导入.数据清洗 ...

  7. python中数据分析常用函数整理

    一. apply函数 作用:对 DataFrame 的某行/列应用函数之后,Apply 返回一些值.函数既可以使用默认的,也可以自定义.注意:在第二个输出中应用 head() 函数,因为它包含了很多行 ...

  8. 第三课 创建函数 - 从EXCEL读取 - 导出到EXCEL - 异常值 - Lambda函数 - 切片和骰子数据

    第 3 课   获取数据 - 我们的数据集将包含一个Excel文件,其中包含每天的客户数量.我们将学习如何对 excel 文件进​​行处理.准备数据 - 数据是有重复日期的不规则时间序列.我们将挑战数 ...

  9. pandas模块常用函数解析之Series(详解)

    pandas模块常用函数解析之Series 关注公众号"轻松学编程"了解更多. 以下命令都是在浏览器中输入. cmd命令窗口输入:jupyter notebook 打开浏览器输入网 ...

随机推荐

  1. OC中数组排序的3种方法

    总结OC中数组排序3种方法:sortedArrayUsingSelector:;sortedArrayUsingComparator:;sortedArrayUsingDescriptors: 大体上 ...

  2. 初学ctypes:打开进程并返回相关信息

    直接上代码: 1. my_debugger_defines.py 定义相关结构体(在后面创建进程及返回信息时,传参可用到) from ctypes import * # Let's map the M ...

  3. DOMContentLoaded和load的区别

    一.概念 DOMContentLoaded 当初始的 HTML 文档被完全加载和解析完成之后,DOMContentLoaded 事件被触发,而无需等待样式表.图像和子框架的完成加载. load loa ...

  4. 03Java基础——继承

    1.继承 例如一个员工类,包括开发员工和经理. package cn.jxufe.java.chapter2.demo12; public class Employee { String name; ...

  5. GUI学习之二十四——QDialog学习总结

    今天学习对话框输入控件的基类(QDialog). 一.描述 是对话类窗口(字体框.颜色选择.文件选择框等)的基类. 对话框窗口是顶级窗口(就是说不包含于哪个父类的显示界面里),主要用于短期任务和与用户 ...

  6. java并发学习--第七章 JDK提供的线程工具类

    一.ThreadLocal ThreadLocal类用于隔离多线程中使用的对象,为ThreadLocal类中传递的泛型就是要隔离的对象,简单的来说:如果我们在主线程创建了一个对象,并且需要给下面的多线 ...

  7. Bloom Filter的算法

     Bloom Filter的算法: 为了降低冲突的概念,Bloom Filter使用了多个哈希函数,而不是一个.创建一个m位BitSet,先将所有位初始化为0,然后选择k个不同的哈希函数.第i个哈希函 ...

  8. Python---进阶---文件操作---搜索文件和保存搜索结果

    ### 编写一个程序,用户输入文件名以及开始搜索的路径,搜索该文件是否存在,如果遇到文件夹,则进入该文件夹继续搜索 - input 去接受用户输入的文件名和开始搜索的路径 - os.path.isdi ...

  9. 【GDOI2016模拟3.10】习用之语

    前言 这道题看上去很水,结果我在比赛上浪费了N多时间在上面,但还是没AC.比赛结束后发现:实际上这道题还是是大水. 题目 分析 设字符串c1c2c3c4,其中c1.c2.c3.c4={'0'~'9', ...

  10. 3D世界变换

    一直弄不清3D场景中scaleOrientation的作用,还有scale.orientation(roation).translation的顺序问题,以往都是试图查一下,关于前者网上几乎找不到什么清 ...