串联熊猫系列并将系列名称添加到多级索引中

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

我具有多个具有匹配的多级索引的命名的Pandas Series数据集

SeriesA = 

L1 L2 L3    value_a1
   L2 L3    value_a2
      L3    value_a3

SeriesA.name = First_Name


SeriesB =

L1 L2 L3    Value_b1
   L2 L3    Value_b2
      L3    Value_b3

SeriesB.name = Second_Name

我想做的是在串联它们之前将序列名称添加到现有序列索引中。预期输出应为

SeriesAB =

L1  L2  L3 First_name    value_a1
    L2  L3 First_name    value_a2
        L3 First_name    value_a3
L1  L2  L3 Second_name   value_b1
    L2  L3 Second_name   value_b2
        L3 Second_name   value_b3

我已经尝试过使用pd.join,pd.merge和pd.concat的各种方法,但是名称似乎是症结所在。

这样做的目的是在将名称值转换为数据框之前合并名称值,以便数据看起来像这样。我猜想unstack是解决这个问题的方法。

final_data =
            First_name  Second_name
L1  L2  L3  value_a1    value_b1
    L2  L3  value_a2    value_b2
        L3  value_a3    value_b3

我也想避免此输出

Unwanted = 
               First_Name   Second_Name
L1   L2   L3   value_a1     NaN
     L2   L3   value_a2     NaN
          L3   value_a3     NaN
L1   L2   L3   NaN          value_b1
     L2   L3   NaN          value_b2
          L3   NaN          value_b3 

python pandas dataframe concatenation series
1个回答
1
投票

concatconcatSeries.reorder_levels一起使用。

Series.reorder_levels之后的级别值重复,因此解决方案有点复杂-Series.unstack是必需的辅助级别:

Series.unstack

如果在concat解决方案之后不重复,则为:

GroupBy.cumcount
© www.soinside.com 2019 - 2024. All rights reserved.