使用pandas中的loc、iloc、ix(不建议使用)函数
源代码及注释:
import pandas as pd
import numpy as np
dates = pd.date_range('20160101',periods=6)
df = pd.DataFrame(np.arange(24).reshape((6,4)),index=dates,columns=['A','B','C','D'])
# # pd.DataFrame(数据,行索引,列索引)
#
# print(df)
# print(df.A) #print(df['A'],df.A) #选择列
# print('*******************************************')
# print(df['20160102':'20160104']) #选择行
# 选择标签 : loc
print(df.loc['20160103']) #选择此标签下数据
print(df.loc['20160102',['A','B']])
# 从位置选择数据:iloc
print(df.iloc[3])
print(df.iloc[3:5,1:3])
print(df.iloc[[1,3,5],1:3])
# (loc 和 iloc 一起使用 )= 使用ix
print(df.ix[:3,['A','C']])
#进行是或否的筛选
print(df[df.A>8]) #将A中大于8的行显示出来
不建议使用 ix 函数的原因见下(引用自知乎):
ix / loc 可以通过行号和行标签进行索引,比如 df.loc[‘a’] , df.loc[1], df.ix[‘a’] , df.ix[1]而iloc只能通过行号索引 , df.iloc[0] 是对的, 而df.iloc[‘a’] 是错误的loc 和 ix 大部分时候行为都差不多, 但是当假如某个行的索引标签就是一个 INT 比如 1 的时候, loc 优先将 df.loc[1] 理解为行标签为 1 的索引, 而 df.ix[1] 优先将其理解为 行号为 1 的索引(就是第二行)为了避免不小心犯错误, 建议:1.当用行号索引的时候, 尽量用 iloc 来进行索引; 2. 而用标签索引的时候用 loc , 3. ix 就别用了。
作者:深蓝加菲
链接:https://www.zhihu.com/question/47362048/answer/255165391
来源:知乎