1 回答

TA貢獻1827條經(jīng)驗 獲得超4個贊
concat與Series.reorder_levels和一起使用Series.unstack。
之后的級別值有重復(fù)concat,因此解決方案有點復(fù)雜 - 是必要的輔助級別GroupBy.cumcount:
df = (pd.concat([SeriesA, SeriesB], keys=('First_Name','Second_Name'))
.reorder_levels([1,2,3,0])
.to_frame('a'))
print (df)
a
L1 L2 L3 First_Name value_a1
First_Name value_a2
First_Name value_a3
Second_Name value_b1
Second_Name value_b2
Second_Name value_b3
df = (df.set_index(df.groupby(df.index).cumcount(), append=True)['a']
.unstack([3])
.reset_index(level=3, drop=True))
print (df)
First_Name Second_Name
L1 L2 L3 value_a1 value_b1
L3 value_a2 value_b2
L3 value_a3 value_b3
如果解決方案更簡單后不重復(fù)concat:
print (SeriesA)
L1 L2 L3 value_a1
L2 L2 L3 value_a2
L3 L2 L3 value_a3
Name: a, dtype: object
print (SeriesB)
L1 L2 L3 value_b1
L2 L2 L3 value_b2
L3 L2 L3 value_b3
Name: a, dtype: object
df = (pd.concat([SeriesA, SeriesB], keys=('First_Name','Second_Name'))
.reorder_levels([1,2,3,0])
.unstack())
print (df)
First_Name Second_Name
L1 L2 L3 value_a1 value_b1
L2 L2 L3 value_a2 value_b2
L3 L2 L3 value_a3 value_b3
添加回答
舉報