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

Python如何将同一Ticker不同日期行转换为首尾观测值对应列结构

Python实现方案

我们可以通过pandas库快速完成该需求,具体实现步骤如下:

步骤1:导入依赖并构造/加载数据

import pandas as pd

# 构造示例数据,你也可以用pd.read_csv()加载你的本地文件
data = {
    'Ticker': ['Apple', 'MSFT', 'MSFT', 'Apple', 'Apple', 'MSFT'],
    'Date': ['2020-04-01', '2020-04-01', '2021-01-01', '2021-01-01', '2021-04-01', '2021-04-01'],
    'Price': [10, 20, 10, 5, 30, 50]
}
df = pd.DataFrame(data)

# 将日期列转换为datetime类型,保证排序逻辑正确
df['Date'] = pd.to_datetime(df['Date'])

步骤2:按Ticker分组处理

首先按Ticker分组,组内按日期升序排序后,取每组的第一个(最早观测)和最后一个(最晚观测)价格,再调整列名即可:

# 分组排序后取首尾值
result = df.sort_values(['Ticker', 'Date']).groupby('Ticker')['Price'].agg(
    Price_of_the_first_observation='first',
    Price_of_the_second_observation='last'
).reset_index()

print(result)

输出结果和目标格式完全一致:

TickerPrice_of_the_first_observationPrice_of_the_second_observation
Apple1030
MSFT2050

如果你需要的是每组按日期排序后的第2条观测而非最后一条,只需要把上述代码中Price_of_the_second_observation='last'修改为Price_of_the_second_observation=lambda x: x.iloc[1]即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 23:36:02