【问题标题】:Pandas concatenate dataframe with multiindex retaining index namesPandas 使用多索引保留索引名称连接数据帧
【发布时间】:2021-09-02 20:43:13
【问题描述】:

我有一个 DataFrames 列表如下,其中列表中的每个 DataFrame 如下:

dfList[0]
monthNum        1      2 
G1                                
2.0           0.05  -0.16
3.0           1.17   0.07
4.0           9.06   0.83

dfList[1]
monthNum        1      2 
G2                                
21.0           0.25   0.26
31.0           1.27   0.27
41.0           9.26   0.23

dfList[0].index
Float64Index([2.0, 3.0, 4.0], dtype='float64', name='G1')
dfList[0].columns
Int64Index([1, 2], dtype='int64', name='monthNum')

我正在尝试在数据框Final_Combined_DF 中实现以下目标:

monthNum        1      2 
G1                                
2.0           0.05  -0.16
3.0           1.17   0.07
4.0           9.06   0.83
G2                                
21.0           0.25   0.26
31.0           1.27   0.27
41.0           9.26   0.23

我尝试了不同的组合:
pd.concat(dfList, axis=0)

但它没有给我想要的输出。我不知道该怎么做。

【问题讨论】:

  • 索引名称不是 DataFrame 中的数据(更类似于标签),您可以将 keys 添加到 concat final_combined_df = pd.concat(df_list, keys=map(lambda d: d.index.name, df_list)) 但您最终会得到一个 MultiIndex 会 i> 是 DataFrame 中的数据。你想做什么?您是要修改框架的数据,还是要更改显示
  • 修改框架的数据

标签: pandas python-3.8


【解决方案1】:

我们可以尝试pd.concatkeys,使用每个DataFrame 中的Index.name 在最后一帧中添加新的级别索引:

final_combined_df = pd.concat(
    df_list, keys=map(lambda d: d.index.name, df_list)
)

final_combined_df:

monthNum  0  1
G1 2.0    4  7
   3.0    7  1
   4.0    9  5
G2 21.0   8  1
   31.0   1  8
   41.0   2  6

使用的设置:

import numpy as np
import pandas as pd

np.random.seed(5)
df_list = [
    pd.DataFrame(np.random.randint(1, 10, (3, 2)),
                 columns=pd.Index([0, 1], name='monthNum'),
                 index=pd.Index([2.0, 3.0, 4.0], name='G1')),
    pd.DataFrame(np.random.randint(1, 10, (3, 2)),
                 columns=pd.Index([0, 1], name='monthNum'),
                 index=pd.Index([21.0, 31.0, 41.0], name='G2'))
]

df_list:

[monthNum  0  1
G1            
2.0       4  7
3.0       7  1
4.0       9  5, 
 monthNum  0  1
G2            
21.0      8  1
31.0      1  8
41.0      2  6]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-05
    • 1970-01-01
    • 2021-01-12
    • 2017-09-04
    • 2014-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多