文章目录
- 代码示例
- 工作原理
- rename_axis
- reset_index
- 各函数对于DataFrame下的应用
- 其他应用
- quantile结果转为DataFrame
代码示例
value_counts
的结果是一个series
,其index
为原来列的值,value
为值的个数。要将其转为DataFrame
需要两个函数rename_axis
和reset_index
.
代码如下:
>>>> df = pd.DataFrame([[i,i*10] for i in range(10)], columns=['a', 'b'])
>>> df
a b
0 0 0
1 1 10
2 2 20
3 3 30
4 4 40
5 5 50
6 6 60
7 7 70
8 8 80
9 9 90
>>> df.b.value_counts().rename_axis("b").reset_index(name="counts")
b counts
0 0 1
1 10 1
2 20 1
3 30 1
4 40 1
5 50 1
6 60 1
7 70 1
8 80 1
9 90 1
工作原理
rename_axis
和reset_index
对于Series
和DataFrame
都可以用。现在讲一下在Series
下的功能。
rename_axis
rename_axis给index改名字,不支持给value列改名字。对于DataFrame时候,支持对列改名字。
参数:axis只支持值为0。
关于此函数,其官方文档也是写的垃圾。
reset_index
reset_index
对于series
对象来说,只有一个作用:将series
转为dataframe,index转为普通列并给一个默认RangeIndex,同时给value列一个名字,这个名字用name参数传递。如下:
>>> s = pd.Series(["dog", "cat", "monkey"])
>>> s.rename_axis("key").reset_index('key', name="animal")
key animal
0 0 dog
1 1 cat
2 2 monkey
各函数对于DataFrame下的应用
Set_index
是给DataFrame指定某一列作为index,并抛弃掉原来的index。
如下:
reset_index
是将DataFrame的index重置为普通列,并设置一个默认index。如下:
其他应用
quantile结果转为DataFrame
>>> df = pd.DataFrame([[i,i*10] for i in range(10)], columns=['a', 'b'])
>>> df.a.quantile([i/4 for i in range(5)]).rename_axis("a_decile").reset_index(name='value_pointer')
a_decile value_pointer
0 0.00 0.00
1 0.25 2.25
2 0.50 4.50
3 0.75 6.75
4 1.00 9.00