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

如何用Pandas DataFrame出售最低排名资产以凑足目标金额

解决方案

实现思路

要完成“出售最低价值资产直至凑够目标金额”的需求,核心逻辑是从价值最低的资产开始(对应Rank数值最大的条目),优先全额出售价值低于剩余目标的资产,最后出售部分价值高于剩余目标的资产,具体步骤如下:

  • 将原DataFrame按Rank降序排列,确保先处理价值最低的资产;
  • 遍历排序后的资产,根据剩余目标金额计算每个资产的出售金额和剩余可用金额;
  • 收集结果并转换为新的DataFrame。

完整代码

import pandas as pd

# 原数据初始化
df = pd.DataFrame({'Tickers': ['AAPL', 'TSLA', 'SGOL', 'BA', 'V'],
                   'Value': [400, 1300, 200, 600, 400],
                   'Rank': [1, 4, 3, 5, 2]})
df = df.sort_values(by=["Rank"])
assets_value = df['Value'].sum()
sell_amount = 1000

# 核心处理逻辑
remaining = sell_amount
result_list = []

# 按Rank降序排列,优先处理最低价值资产
df_sorted = df.sort_values(by="Rank", ascending=False)

for _, row in df_sorted.iterrows():
    if remaining <= 0:
        break
    ticker = row['Tickers']
    asset_value = row['Value']
    
    if asset_value <= remaining:
        # 全额出售该资产
        sold = asset_value
        available = 0
        remaining -= asset_value
    else:
        # 出售部分资产,凑够剩余目标
        sold = remaining
        available = asset_value - remaining
        remaining = 0
    
    result_list.append({
        'Tickers': ticker,
        'Sold': sold,
        'Available': available
    })

# 转换为结果DataFrame
result_df = pd.DataFrame(result_list)
print(result_df)

输出结果

Tickers  Sold  Available
0       BA   600          0
1      TSLA   400        900

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 14:00:57