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

如何从每月更新的CSV中选中倒数第二列获取当月净收入?

QuickBooks P&L报表自动化:动态获取当月净收入解决方案

一、直接选取倒数第二列的实现方式

如果确认最后一列固定是Total,可以通过以下两种方式快速获取倒数第二列的第一行值(即当月净收入):

  1. 通过索引直接选取倒数第二列
    利用iloc按位置索引,[:, -2]表示选取所有行的倒数第二列,再取第一行数据:
# 获取倒数第二列的第一行值
current_net_income = df.iloc[:, -2][0]
  1. 排除Total列后取最后一列
    如果担心未来Total列位置变动,先移除Total列,再取剩余列的最后一列,逻辑更清晰:
# 先删除Total列,再取最后一列的第一行值
current_net_income = df.drop('Total', axis=1).iloc[:, -1][0]

二、这种依赖列位置的方式是否妥当?

直接依赖列位置(倒数第二)存在风险:如果后续QuickBooks导出的CSV新增了其他汇总列(比如季度汇总、同比列),列的相对位置会改变,导致取值错误。

更稳健的替代方案:基于月份名称匹配

QuickBooks导出的P&L报表中,月份列会明确标注月份名称(如Nov/December),可以通过动态匹配当前月份的列名来获取数据,完全脱离列位置的限制:

import datetime
import pandas as pd

# 读取CSV到DataFrame(示例用你提供的测试数据)
d = {'Jan': [50], 'Feb': [70], 'Total':[120]}
df = pd.DataFrame(data=d)

# 获取当前月份的缩写(如'Nov'),如果CSV是全称则用'%B'
current_month = datetime.datetime.now().strftime('%b')

# 匹配列名获取当月净收入
if current_month in df.columns:
    current_net_income = df[current_month][0]
else:
    # 处理当月数据未更新的情况
    current_net_income = None
    print(f"未找到{current_month}列数据")

这种方式的优势在于:无论CSV的列如何增减、排序如何变化,只要月份列名正确,就能精准获取对应数据,适配长期的报表自动化需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 22:10:29