如何从Pandas DataFrame读取指定列并计算日销售额差值
计算Pandas DataFrame中销售额的日差值
步骤分解
- 读取指定列:读取CSV时直接指定要加载的
date和sales value列,减少不必要的内存占用 - 标准化日期格式:将
date列转换为Pandas的datetime类型,确保日期顺序逻辑正确(避免字符串排序导致的计算错误) - 计算日差值:使用
shift()方法获取前一日的销售额,用当日销售额减去昨日值得到差值,首行无昨日数据,填充为0
完整代码示例
import pandas as pd # 读取CSV,仅加载需要的列 df = pd.read_csv('sales_data.csv', usecols=['date', 'sales value']) # 将date列转换为datetime类型,匹配示例中的日期格式 df['date'] = pd.to_datetime(df['date'], format='%d-%b-%y') # 按日期排序(若CSV中日期无序,这一步是必要的) df = df.sort_values('date').reset_index(drop=True) # 添加diff列:当日销售额减去昨日销售额,首行空值填充为0 df['diff'] = df['sales value'] - df['sales value'].shift(1) df['diff'] = df['diff'].fillna(0).astype(int) print(df)
运行结果
| date | sales value | diff |
|---|---|---|
| 2022-10-10 | 100 | 0 |
| 2022-10-11 | 120 | 20 |
| 2022-10-12 | 105 | -15 |
关键说明
pd.to_datetime()的format参数要严格匹配你的CSV日期格式,示例中对应日-月份缩写-两位年份的格式- 必须确保数据按日期排序,否则
shift()会取到错误的前一行数据 - 如果不需要将差值转为整数,可以去掉
.astype(int)部分
内容的提问来源于stack exchange,提问作者Saravanakumar K
相关产品推荐
相关产品推荐

