水平合并数据帧,同时使列具有唯一值

问题描述 投票:0回答:1

我有一个 for 循环用于获取数据的数据帧(我提供了股票列表,它为每只股票获取数据的数据帧。我通过使用字典来做到这一点

d={}
fullset= pd.DataFrame ()
for name in stocklist:

接下来,我可以使用以下命令水平合并数据集:


fullset= pd.concat([fullset, d[name]], axis=1)

我遇到的问题是数据集都具有相同的列标题。在这次合并中我可以做些什么,以便将“名称”变量附加到其特定数据帧的每个标头中?例如,SPX-最高价、SPX-最低价、SPX-收盘价...道指最高价、道指最低价、道指收盘价

*注意:我知道有一个分层选项(基本上是添加第二个索引),但我无法让它工作,即使我做到了,我的首选是将股票名称附加到每个列,因为我在数据之上运行 ML 模型,但我不知道它将如何处理分层标题。

除此之外,我尝试使用

keys=d[name]
创建键参数,但这不起作用。我也尝试过仅使用变量“name”,但我并不期望它能起作用,除非 concat 在幕后运行某种 for 循环。

python dataframe merge
1个回答
0
投票

我们可以使用

pandas.DataFrame.add_prefix
方法为列名添加前缀。

fullset = pd.DataFrame({})
for name in stocklist:
    fullset = pd.concat([
        fullset, 
        d[name].add_prefix(f"{name}-")
    ], axis=1)

print(fullset)
© www.soinside.com 2019 - 2024. All rights reserved.