如何将两个时间戳索引的pandas DataFrame合并为列多级索引DataFrame
实现代码
import pandas as pd # 给单个币种的close列添加二级索引 eth_col = pd.MultiIndex.from_tuples([('eth', 'close')]) eth_df_clean = eth_df[['close']].set_axis(eth_col, axis=1) btc_col = pd.MultiIndex.from_tuples([('btc', 'close')]) btc_df_clean = btc_df[['close']].set_axis(btc_col, axis=1) # 按时间戳索引合并 # 如需仅保留两个币种都有数据的时间戳,添加join='inner'参数即可 portfolio_df = pd.concat([eth_df_clean, btc_df_clean], axis=1)
可扩展写法(适配多币种场景)
后续如果要新增其他币种,不需要重复写处理逻辑,用批量处理方式即可:
# 把所有币种的DataFrame存入字典,key为币种符号 coin_dfs = { 'eth': eth_df, 'btc': btc_df } processed_list = [] for coin_name, df in coin_dfs.items(): multi_col = pd.MultiIndex.from_tuples([(coin_name, 'close')]) processed_list.append(df[['close']].set_axis(multi_col, axis=1)) portfolio_df = pd.concat(processed_list, axis=1)
运行后得到的portfolio_df完全匹配要求的结构:行索引为timestamp,列采用二级索引,第一级为币种符号、第二级为close字段。
内容的提问来源于stack exchange,提问作者Jacob R
相关产品推荐
相关产品推荐

