回帖:# 指定新列iris.assign(sepal_ratio=iris['SepalWidth'] / iris['SepalLength']).head()df.assign(rate=lambda df: df.orders/df.uv)# shift 函数是对数据进行平移动的操作df['增幅'] = df['国内生产总值'] - df['国内生产总值'].shift(-1)df.tshift(1) # 时间移动,按周期# 和上相同,diff 函数是用来将数据进行移动之后与原数据差# 异数据,等于 df.shift()-dfdf['增幅'] = df['国内生产总值'].diff(-1)# 留存数据,因为最大一般为数据池df.apply(lambda x: x/x.max(), axis=1) # 取 best 列中值为列名的值写到 name 行上df['value'] = df.lookup(df['name'], df['best']) s.where(s > 1, 10) # 满足条件下数据替换(10,空为 NaN)s.mask(s > 0) # 留下满足条件的,其他的默认为 NaN# 所有值加 1 (加减乘除等)df + 1 / df.add(1)# 管道方法,链式调用函数,f(df)=df.pipe(f)def gb(df, by):result = df.copy()result = result.groupby(by).sum()return result # 调用df.pipe(gb, by='team')# 窗口计算 '2s' 为两秒df.rolling(2).sum()# 在窗口结果基础上的窗口计算df.expanding(2).sum()# 超出(大于、小于)的值替换成对应值df.clip(-4, 6)# AB 两列想加增加 C 列df['C'] = df.eval('A+B')# 和上相同效果df.eval('C = A + B', inplace=True)# 数列的变化百分比s.pct_change(periods=2)# 分位数, 可实现时间的中间点df.quantile(.5)# 排名 average,min,max,first,dense, 默认 averages.rank()# 数据爆炸,将本列的类列表数据和其他列的数据展开铺开df.explode('A')# 枚举更新status = {0:'未执行', 1:'执行中', 2:'执行完毕', 3:'执行异常'}df['taskStatus'] = df['taskStatus'].apply(status.get)df.assign(金额=0) # 新增字段df.loc[('bar', 'two'), 'A'] # 多索引查询df.query('i0 == "b" & i1 =="b"') # 多索引查询方法 2# 取多索引中指定级别的所有不重复值df.index.get_level_values(2).unique()# 去掉为零小数,12.00 -> 12df.astype('str').applymap(lambda x: x.replace('.00', ''))# 插入数据,在第三列加入「两倍」列df.insert(3, '两倍', df['值']*2)# 枚举转换df['gender'] = df.gender.map({'male':'男', 'female':'女'})# 增加本行之和列df['Col_sum'] = df.apply(lambda x: x.sum(), axis=1)# 对指定行进行加和col_list= list(df)[2:] # 取请假范围日期df['总天数'] = df[col_list].sum(axis=1) # 计算总请假天数# 对列求和,汇总df.loc['col_sum'] = df.apply(lambda x: x.sum())# 按指定的列表顺序显示df.reindex(order_list)# 按指定的多列排序df.reindex(['col_1', 'col_5'], axis="columns")