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)
输出结果和目标格式完全一致:
| Ticker | Price_of_the_first_observation | Price_of_the_second_observation |
|---|---|---|
| Apple | 10 | 30 |
| MSFT | 20 | 50 |
如果你需要的是每组按日期排序后的第2条观测而非最后一条,只需要把上述代码中
Price_of_the_second_observation='last'修改为Price_of_the_second_observation=lambda x: x.iloc[1]即可。
内容的提问来源于stack exchange,提问作者joao_g
相关产品推荐
相关产品推荐

