如何将日期、代码、值列表转换为指定结构的Pandas DataFrame
解决方案:将三组列表转为指定格式的Pandas DataFrame
Got it!我来帮你把这三组列表转换成符合要求的Pandas DataFrame,分两种常见情况来演示,你可以根据自己的实际数据选对应的方法:
情况1:每个列表位置对应一组(date, ticker, value)
如果你的三个列表是按「日期-股票代码-对应数值」的位置一一匹配的(比如date1对应ticker1的value1,date2对应ticker2的value2),可以先创建长格式DataFrame,再转成宽格式:
import pandas as pd # 替换成你实际的三组列表 dates = ['2023-01-01', '2023-01-02', '2023-01-03'] tickers = ['AAPL', 'GOOG', 'AAPL'] values = [150.25, 2780.50, 151.10] # 第一步:创建长格式DataFrame,把三组数据关联起来 df_long = pd.DataFrame({ 'date': dates, 'ticker': tickers, 'value': values }) # 第二步:转成宽格式,日期做索引,股票代码做列名 df_wide = df_long.pivot(index='date', columns='ticker', values='value') # 查看结果 print(df_wide)
输出结果示例:
ticker AAPL GOOG date 2023-01-01 150.25 NaN 2023-01-02 NaN 2780.5 2023-01-03 151.10 NaN
注:如果某个日期下没有对应股票的数值,会显示NaN,你可以用fillna()方法填充默认值(比如df_wide.fillna(0, inplace=True))
情况2:日期是唯一索引,数值是每行的多列数据
如果你的日期列表是唯一的索引项,ticker是列名,而数值列表是每个日期对应所有ticker的数值集合(比如value1是date1下所有ticker的数值组成的列表),可以直接构造DataFrame:
import pandas as pd # 替换成你实际的三组列表 dates = ['2023-01-01', '2023-01-02', '2023-01-03'] tickers = ['AAPL', 'GOOG', 'MSFT'] values = [[150, 2800, 300], [151, 2810, 302], [152, 2820, 303]] # 直接创建DataFrame,指定索引和列名 df = pd.DataFrame(values, index=dates, columns=tickers) # 查看结果 print(df)
输出结果示例:
AAPL GOOG MSFT 2023-01-01 150 2800 300 2023-01-02 151 2810 302 2023-01-03 152 2820 303
内容的提问来源于stack exchange,提问作者bloodynri
相关产品推荐
相关产品推荐

