如何将Pandas Series的日期索引保留至转换后的DataFrame中?
保留日期索引的Series转DataFrame解决方案
方法1:explode + 字典转列(简洁高效)
利用Pandas的explode展开列表元素,再将每个字典转为DataFrame列,最后重置并设置索引:
import pandas as pd stk = pd.Series([[{'stock': 'AAPL', 'amt': 23}, {'stock': 'DIS', 'amt': 52}], [{'stock': 'IBM', 'amt': 78}, {'stock': 'MSFT', 'amt': 34}]], index=['2023-12-16','2023-12-17']) # 展开列表 → 字典转列 → 重置索引为dt列 → 设置dt为索引 df = stk.explode().apply(pd.Series).reset_index(names='dt').set_index('dt') print(df)
输出结果:
stock amt dt 2023-12-16 AAPL 23 2023-12-16 DIS 52 2023-12-17 IBM 78 2023-12-17 MSFT 34
方法2:循环时手动添加日期索引
在遍历原Series时,给每个子DataFrame添加对应的日期列,再合并:
import pandas as pd stk = pd.Series([[{'stock': 'AAPL', 'amt': 23}, {'stock': 'DIS', 'amt': 52}], [{'stock': 'IBM', 'amt': 78}, {'stock': 'MSFT', 'amt': 34}]], index=['2023-12-16','2023-12-17']) df_list = [] # 遍历索引和对应的数据列表 for dt, stock_list in stk.items(): temp_df = pd.DataFrame(stock_list) temp_df['dt'] = dt # 添加日期列 df_list.append(temp_df) # 合并所有子DataFrame并设置dt为索引 df = pd.concat(df_list).set_index('dt') print(df)
输出与方法1完全一致。
内容的提问来源于stack exchange,提问作者EddyBoy
相关产品推荐
相关产品推荐

