Dataframe选取数据
2020-03-09 本文已影响0人
葡萄柚子茶
#获得一个dataframe类型的数据样例
df=get_price('000001.XSHE',start_date='2016-02-01',end_date='2016-02-04',frequency='daily',fields=['open','close','high','low'])
df

选择行名
df.index
#DatetimeIndex(['2016-02-01', '2016-02-02', '2016-02-03', '2016-02-04'], dtype='datetime64[ns]', freq=None, tz=None)
选择列名
df.columns
#Index([u'open', u'close', u'high', u'low'], dtype='object')
选择值
df.values
array([[ 8.08, 7.93, 8.1 , 7.88],
[ 7.93, 8.05, 8.12, 7.92],
[ 7.97, 7.97, 8. , 7.91],
[ 8. , 8.05, 8.09, 8. ]])
以行,列名字作为 索引选择数据---df.loc[行标签,列标签]
# 选择行标签为'2016-02-01',列标签为'open',的数据
df.loc['2016-02-01', 'open']
#8.08
以位置(第几行、第几列)为索引选择数据—— df.iloc[行位置,列位置]
注意位置从0开始
##选择第一行第一列的数据
df.iloc[0,0]
#8.08
同时根据标签和位置选择数据——df.ix[行,列]
# 选择第1行列为‘open’的数据
df.ix[0, 'open']
#8.08
选择连续的多行多列——切片
#选择行从'2016-02-02'到'2016-02-04',列从'open'到'high'的数据
df.loc['2016-02-02':'2016-02-04','open':'high']

选择不连续的某几行或某几列
df.loc[:,['open', 'high']]
返回一个dataframe的单列或单行
df.ix[0, :]
open 8.08
close 7.93
high 8.10
low 7.88
Name: 2016-02-01 00:00:00, dtype: float64
若要返回dataframe,可用中括号把索引括上,如下。
df[['open']]
按条件选取数据——df[逻辑条件][¶]
逻辑条件支持&(与)、|(或)、~(非)等逻辑运算