import pandas as pd
import numpy as np
df=pd.DataFrame({"id":[1001,1002,1003,1004,1005,1006],
"date":pd.date_range('20130102', periods=6),
"city":['Beijing ', 'SH', ' guangzhou ', 'Shenzhen', 'shanghai', 'BEIJING '],
"age":[23,44,54,32,34,32],
"category":['100-A','100-B','110-A','110-C','210-A','130-F'],
"price":[1200,np.nan,2133,5433,np.nan,4432]},columns =['id','date','city','category','age','price'])
df
df1=pd.DataFrame({"id":[1001,1002,1003,1004,1005,1006,1007,1008],
"gender":['male','female','male','female','male','female','male','female'],
"pay":['Y','N','Y','Y','N','Y','N','Y',],
"m-point":[10,12,20,40,40,40,30,20]})
df1
df_inner=pd.merge(left=df,right=df1,how='inner',on='id')
df_inner
# 按索引提取索引号为3的单行数据,提取了index=3的行数据
df_inner.loc[3]
# 使用冒号可以限定提取行数据的范围,是dataframe数据类型,这里的序号就代表index的行号
df_inner.loc[0:5]
# 使用不规则index测试下
dfs=df_inner.set_index(keys='age')
dfs
dfs.loc[23:54]
# 使用日期作为索引
df_inner.set_index('date',inplace=True)
df_inner
# 提取4号之前的所有数据
df_inner.loc[:'2013-01-04']
# df.loc是按标签提取,df.iloc是按位置提取
# 使用iloc按位置区域提取数据,iloc可以使用-1这种
df_inner.iloc[:3,:2]
df_inner
# iloc按位置区域提取数据
df_inner.iloc[0:3,0:4]
# iloc按位置单独提取数据
df_inner.iloc[[0,2,5],[0,4,5]]
# 按标签和位置组合提取 ix
# ix是loc和iloc的混合,既能按索引标签提取,也能按位置进行数据提取
# 使用ix按索引标签和位置混合提取数据,不推荐使用了
df_inner.ix[:'2020-01-03',:4]
# 有个空格
df_inner.loc['2013-01-02'].city
# 按条件提取
# 使用isin函数对city中的值是否为beijing进行判断
df_inner['city'].isin(['SH'])
# 将isin函数嵌套到loc的数据提取函数中,将判断结果为Ture数据提取出来
df_inner.loc[df_inner['city'].isin(['SH','Shenzhen'])]
# 数值提取还可以完成类似数据分列的工作,从合并的数值中提取出制定的数值
pd.DataFrame(df_inner['category'].str[:3])