数据提取
- 使用loc,iloc
- df.query()
- df.isin()
- .str.contains
- np.where
- 布尔值
- 切片
df.loc方法
df.loc[rows,cols]
- 模糊匹配
cj.loc[cj['货号'].str.contains('EC-')] #模糊匹配
cj_in.rename(columns={'货号':'编码1'}) #改名字- loc
cj_in.loc[15] #按单行
cj_out.loc[0:3] #提取前面3行数据
cj_in.loc[cj_in['货号']=='Jc-7901'] #按值搜索
#多条件,要用()起来
(tb['货号']== self.huohao) & (tb['是否有效'] == 1) - iloc
df.iloc[[0],[1]] #如提取第1行,第2列的值:
df.iloc[[0],[1]] #则会返回一个df,即有字段名和行号。
df.iloc[[0],[1]].values #返回的值会是列表,而且是嵌套列表:
df.iloc[[0],[1]].values[0][0]- 多条件查询
df_cha = df[(df['日期']==res_day)& (df['盈亏数量']>0)]df.query 函数
单条件查询
cj_in.query('货号== "AC-5311"')多条件查询
# 多条件筛选 and or | &
df.query('节庆=="夏季" & 合格 > 2000')
#loc方法对比
df.loc[(df['节庆']=="夏季") & (df['合格']>2000)]使用外部输入查询
# 使用外部输入查询
start_date =input("起始日期")
end_date = input("结束日期")
dh_week = df.loc[((df['入库类型']=='进货入库')&(df['记账日期']<=end_date)&(df['记账日期']>=start_date)),['记账日期','箱数','金额','体积']].groupby('记账日期').sum() #.loc筛选数据,.groupby 按日期分类汇总
dh_week.loc['合计']=dh_week.apply(lambda x: x.sum()) #添加合计行
r1 = dh_week.loc['合计']- 添加合计行
dh_week.loc['合计']=dh_week.apply(lambda x: x.sum()) #添加合计行
r1 = dh_week.loc['合计']注意列名称有空格的情况
df.query("`this year` < 5 ")使用反引号
- 查询INDEX的问题
date1 = input("输入日期:") res1 = tb.loc[[date1]] - df.isin()
data[data['A'].isin([4,8])] #返回值满足,{A列含有数值[4,8]}g_two_score[“姓名”].isin([“小白”,“小橙”])#使用isin()函数判断,提取的行数
- 布尔值取数