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

如何根据季度列内容筛选DataFrame中各Deal首季财务数据并合并为单列

提取每个Deal第一季度的Financial Data1并合并列的实现方法

没问题,我来帮你搞定这个需求!针对你给出的DataFrame,要提取每个Deal第一季度的Financial Data1并合并成单独一列,用pandas可以轻松实现,下面给你两种常用方法:

先修正并构造示例DataFrame

首先先把你给出的排版有点混乱的DataFrame整理成标准格式(方便后续测试):

import pandas as pd

data = {
    'Deal': [0, 1, 2, 1, 4, 7, 2, 5, 8],
    'Year': [1, 1, 1, 2, 2, 2, 3, 3, 3],
    'Date': ['1991/1/1', '1991/1/1', '1991/1/1', '1992/1/1', '1992/1/1', '1992/1/1', '1993/1/1', '1993/1/1', '1993/1/1'],
    'Financial Data1': [122, 122, 122, 85, 85, 85, 85, 85, 85],
    'Financial Data2': [123, 123, 123, 90, 90, 90, 90, 90, 90],
    'Financial Data3': [120, 120, 120, 80, 80, 80, 100, 100, 100],
    'Quarter': [1, 2, 3, 1, 2, 3, 1, 2, 3]
}
df = pd.DataFrame(data)

方法一:直接筛选+合并(简单直观)

这种方法适合每个Deal只有一条第一季度记录的场景:

  1. 先筛选出Quarter等于1的行,只保留Deal和Financial Data1两列
  2. 重命名列名方便识别,再合并回原DataFrame(如果不需要合并,只保留结果列也可以)
# 筛选Q1数据并整理列名
q1_data = df[df['Quarter'] == 1][['Deal', 'Financial Data1']].rename(columns={'Financial Data1': 'Q1_Financial_Data1'})

# 合并回原DataFrame(如果只需要单独一列,直接用q1_data即可)
merged_df = df.merge(q1_data, on='Deal', how='left')

方法二:分组提取(灵活处理多场景)

如果你的数据中存在同一个Deal对应多个第一季度记录(比如不同年份),可以用分组的方式灵活处理(比如取第一个值、平均值等):

方式1:用groupby+apply提取

# 按Deal分组,提取每个组中Q1的Financial Data1(取第一个匹配值)
df['Q1_Financial_Data1'] = df.groupby('Deal').apply(
    lambda group: group[group['Quarter'] == 1]['Financial Data1'].iloc[0]
).reset_index(drop=True)

方式2:高效索引匹配(性能更优)

如果数据量较大,这种方式比apply更高效:

# 先标记Q1的行,然后建立Deal到对应Financial Data1的映射
q1_mask = df['Quarter'] == 1
deal_q1_map = df.loc[q1_mask].set_index('Deal')['Financial Data1']

# 用映射给原DataFrame添加新列
df['Q1_Financial_Data1'] = df['Deal'].map(deal_q1_map)

两种方法最终都会得到一个包含新列Q1_Financial_Data1的DataFrame,每一行对应所属Deal的第一季度Financial Data1值。

内容的提问来源于stack exchange,提问作者Elias K.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:50:32