You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pandas在单行代码中完成多步数据处理操作?

链式调用实现数据清洗流程

直接用Pandas的链式调用可以把所有步骤合并为一行,同时修正原代码里的几处小问题(比如列名大小写不一致、变量名错误、求和列名错误):

final_df = (
    df[['transaction Date', 'amount', 'distance']]
    .assign(**{'transaction Date': pd.to_datetime(df['transaction Date'], unit='D', origin='1899-12-30')})
    .query('distance.notnull() and `transaction Date` > "2021-01-01"')
    .groupby(pd.Grouper(key='transaction Date', freq='W'))['amount']
    .sum()
)

各步骤对应说明:

  • 筛选列:df[['transaction Date', 'amount', 'distance']] 对应原步骤1,保留需要的三列
  • 转换日期格式:用.assign()方法替换原日期列,对应原步骤2,解决Excel日期转标准格式的问题
  • 过滤数据:用.query()替代布尔索引,写法更简洁,对应原步骤3的双条件过滤
  • 按周分组求和:直接链式调用groupby()和sum(),这里把原代码中不存在的'values'改为实际存在的'amount',对应原步骤4

如果喜欢更紧凑的单行写法(不换行):

final_df = df[['transaction Date', 'amount', 'distance']].assign(**{'transaction Date': pd.to_datetime(df['transaction Date'], unit='D', origin='1899-12-30')}).query('distance.notnull() and `transaction Date` > "2021-01-01"').groupby(pd.Grouper(key='transaction Date', freq='W'))['amount'].sum()

内容的提问来源于stack exchange,提问作者Valentin Galardi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 15:50:35