我具有多个具有匹配的多级索引的命名的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
将concat
与concat
和Series.reorder_levels
一起使用。
Series.reorder_levels
之后的级别值重复,因此解决方案有点复杂-Series.unstack
是必需的辅助级别:
Series.unstack
如果在concat
解决方案之后不重复,则为:
GroupBy.cumcount