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

如何在Python中使用Pandas按顺序拆分两个DataFrame并实现基数与系数的依次除法运算

解决Pandas迭代拆分基数的问题

没问题,我来帮你搞定这个需求。从你给出的结果来看,你需要的是迭代式地将初始基数依次除以DataFrame1中的系数——也就是用上一步的拆分结果继续除以下一个系数,而不是一次性做广播除法对吧?下面是具体的实现步骤和代码:

步骤1:创建并预处理DataFrame

首先我们需要把两个DataFrame创建出来,同时把日期列转为datetime类型,并确保DataFrame1的顺序是按日期从新到旧(和你需要的处理顺序一致):

import pandas as pd

# 构建DataFrame1:日期和系数
df1 = pd.DataFrame({
    'date': ['2020-10-14', '2019-08-06', '2017-09-05'],
    'coefficient': [4.0, 8.0, 8.0]
})
# 转换日期格式并按降序排序,保证处理顺序正确
df1['date'] = pd.to_datetime(df1['date'])
df1 = df1.sort_values('date', ascending=False).reset_index(drop=True)

# 构建DataFrame2:初始基数
df2 = pd.DataFrame({
    'date': ['2020-12-30'],
    'bases': [6498927]
})

步骤2:迭代计算拆分基数

接下来我们取出初始基数,然后依次除以每个系数,记录每次的结果:

# 获取初始基数数值
current_base = df2['bases'].iloc[0]

# 存储每次拆分后的结果
split_results = []

# 遍历df1中的系数,迭代计算
for coef in df1['coefficient']:
    current_base = current_base / coef
    # 按照你给出的结果截断小数部分(如果需要四舍五入可以用round())
    split_results.append(int(current_base))

# 将结果合并到df1中,生成新的"split_base"列
df1['split_base'] = split_results

步骤3:查看最终结果

执行完上面的代码后,你可以通过以下代码查看结果:

print(df1[['date', 'split_base']])

输出结果会和你期望的完全一致:

date  split_base
0 2020-10-14      1624731
1 2019-08-06       203091
2 2017-09-05        25386

补充说明

  • 如果你的DataFrame1本来就是按日期降序排列的,那sort_values这一步可以省略;
  • 如果你需要对拆分结果做四舍五入而不是截断小数,只需要把int(current_base)替换成round(current_base)即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 03:27:29