python在resample后用agg对多列使用自定义函数

import pandas as pd


def cal_ws():
	pass
	
df = pd.read_csv('D:\\Data\\200 Stocks 1 minute Data\\data.csv')
ohlc_dict = {
    'open':'first',
    'high':'max',
    'low':'min',
    'close':'last',
    'volume': cal_ws  # 自定义函数无需引号
    }
df = df.resample('3min').agg(ohlc_dict)

使用 GroupBy.agg 带回分配,因为不是就地操作:

df = df.resample('3min').agg(ohlc_dict)

在这里插入图片描述

# 对多列进行不同的聚合操作, 并修改相应的列名
df.groupBy("Job") \
    .agg(f.sum("salary").alias("sum_salary"), 
         f.avg("salary").alias("avg_salary"), 
         f.min("salary").alias("min_salary"), 
         f.max("salary").alias("max_salary"), 
         f.mean("salary").alias("mean_salary") 
     ) \
    .show(truncate=False)

在这里插入图片描述

data_copy = pd.DataFrame(data[['水平', '竖直']])
data_copy_cal = data_copy.resample('10min', closed='right', label='right').apply(lambda x: pd.Series(
    {'ws_mean': x['水平'].mean(), 'wd_mean': col_standard.paper_method(x['水平'], x['竖直'])}))

参考链接:
[1] python - resample() 得到了一个意外的关键字参数 ‘how’ ?
[2] pyspark编程实践(agg操作&自定义聚合函数) 2020.11;

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值