gpt4 book ai didi

python - 将 DataFrame 与多索引列合并

转载 作者:太空宇宙 更新时间:2023-11-03 21:09:00 26 4
gpt4 key购买 nike

我从数据框中的不同来源下载了数据,并希望将它们合并到一个最终的数据框中。让我们用下面的例子来说明它:

数据框 1(已经是多索引列)

index    stockA        stockB      ...
O L H C O L H C
1/1/19 10 15 20 17 35 30 39 37
2/1/19 ... ...
...

数据框 2(非多索引列)

index    stockA  stockB     
1/1/19 1.5 3.2
2/1/19 ... ...
...

我想合并两个 dataframe 并为 dataframe2 中的数据指定列名称。两个数据框中的索引日期可能不同,因此我可能需要进行内部合并。

预期输出(多索引列)

index    stockA                 stockB             ...
O L H C new_col O L H C new_col
1/1/19 10 15 20 17 1.5 35 30 39 37 3.2
2/1/19 ... ...
...

最佳答案

用途:

print (df1)
stockA stockB
O L H C O L H C
1/1/19 10 15 20 17 35 30 39 37
2/1/19 12 13 26 27 31 50 29 17

print (df2)
stockA stockB
2/1/19 1.5 3.2
3/1/19 1.2 6.2

如有必要,将两个 index 中的索引转换为 datetime:

df1.index = pd.to_datetime(df1.index, format='%d/%m/%y')
df2.index = pd.to_datetime(df2.index, format='%d/%m/%y')

通过Index.intersection在两个索引中获得相同的值:

idx = df1.index.intersection(df2.index)
print (idx)
DatetimeIndex(['2019-01-02'], dtype='datetime64[ns]', freq=None)

MultiIndex.from_product中创建MultiIndex在 df2 中:

df2.columns = pd.MultiIndex.from_product([df2.columns, ['new']])
print (df2)
stockA stockB
new new
2019-01-02 1.5 3.2
2019-01-03 1.2 6.2

DataFrame.loc过滤两个数据帧,通过 DataFrame.join 一起加入最后按DataFrame.sort_index排序MultiIndex :

df = df1.loc[idx].join(df2.loc[idx]).sort_index(level=0, axis=1)
print (df)
stockA stockB
C H L O new C H L O new
2019-01-02 27 26 13 12 1.5 17 29 50 31 3.2

关于python - 将 DataFrame 与多索引列合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55195539/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com