https://blog.csdn.net/qq_41221743/article/details/81172952
1.
Series的reindex()方法能修改Series的index,如果修改的index与创建的index没有对应的话,就会引入缺失值
import pandas as pd
import numpy as np
obj=pd.Series([4.1,4.2,5.7,8.9],index=['a','b','c','d'])
print(obj)
obj1=obj.reindex(['a','b','e'])
print(obj1)
reindex()方法也可以修改DataFrame的columns index 或则 rows index ,和Series一样没有对应的,将为缺失值。注意在修改DataFrame的columns,要在reindex()注明frame.reindex(columns)
frame=pd.DataFrame(np.arange(9.).reshape(3,3),index=['a','b','c'],columns=['one','two','three'])
print(frame)
frame1=frame.reindex(['a','b','c','d'])
print(frame1)
state=['one','two','four']
frame2=frame.reindex(columns=state)
print(frame2)
也可以使用更简洁的loc()来该改变index
frame3=frame.loc[['a','b','c','d'],state]
print(frame3)
2.按轴删除记录(axis)
drop()方法会删去传入的参数(axis)对应的某一行
对于Series,删除后悔返回一个新的obj。
obj=pd.Series(np.arange(5.),index=['a','b','c','d','e'])
print(obj)
obj1=obj.drop('d')
print(obj1)
对于DataFrame,因为它有rows 与 columns,所以在drop()参数中默认是删除行轴,如果加入axis=1 或者 axis='columns'就会删除列轴
代码:
frame=pd.DataFrame(np.arange(16.).reshape(4,4),index=['a','b','c','d'],columns=['one','two','three','four'])
#print(frame)
frame1=frame.drop(['a','b'])
print(frame1)
frame2=frame.drop(['one','two'],axis=1)
print(frame2)
frame3=frame.drop(['three','four'],axis='columns')
print(frame3)
3.索引,选择,过滤
对于Series:
索引:
import numpy as np
import pandas as pd
obj=pd.Series(np.arange(4.),index=['a','b','c','d'])
print(obj)
按照index的取值:
print(obj['c'])
按照obj中的第几个:
print(obj[2])
切片,按照区间数字,区间一定要记住是左闭右开:
print(obj[2:4])
选中行:
print(obj[['a','b','c']])
按照第几个,传入存入的列表:
print(obj[1,3])
设置条件:
print(obj[obj<2])
按照label标签的值切片的时候,不会像上面的切片一样不包括尾结点,它会包括尾部结点
print(obj['b':'c'])
可以给选中的更改值
obj['b':'c']=5.
print(obj)
obj1=obj
obj1[1:3]=6.
print(obj1)
DataFrame:
对于DataFrame,我们可以通过indexing 数值,序列来像Series一样选择一个以上的列。如果要选择通过条件的行加列,我会在下面介绍
frame=pd.DataFrame(np.arange(16.).reshape(4,4),index=['a','b','c','d'],columns=['one','two','three','four'])
print(frame)
print(frame['two'])
print(frame[['three','four']])
从上面的这些大致看得出来DataFrame 和Series的索引没多大区别
print(frame[:2])
print(frame[frame['three']>5.])
布尔型DataFrame:
print(frame<5.)
给符合条件的重新赋值:
frame[frame<5.]=0.
print(frame)
方法loc[],iloc[]! 我们可以通过这两个方法来选择DataFrame中的一行多列或者是多行多列!
下面通过例子来介绍如何用:
frame:
通过loc[]来选择多行多列:
frame1=frame.loc[['a','b'],['two','three']]
print(frame1)
我们使用iloc也能实现同样的效果,这次我们不选择传入的参数是列或行标签的标签名,而是传入每行,列的序列号。如果你想传入标签名,也可以的
frame2=frame.iloc[[0,1],[1,2]]
print(frame2)
print(frame.iloc[2]),一般默认的都是第一个参数为行。顺序都是先行后列,比如下面输出第3行
loc ,ilo都已可以用于切片,如:
print(frame.loc[:'d',['one','three']]),切片从那么多例子可以看出来,如果传入的是序号那么就不会包括尾结点,如果不是序号,是label值就会包括尾结点
iloc方法与loc不同的一点是还可以在后面附加条件
frame.loc[:,:3][frame.three>5.]
---------------------
作者:小白Py
来源:CSDN
原文:https://blog.csdn.net/qq_41221743/article/details/81172952
版权声明:本文为博主原创文章,转载请附上博文链接!