第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

連接 Pandas 系列并將系列名稱添加到多級索引

連接 Pandas 系列并將系列名稱添加到多級索引

慕娘9325324 2022-06-22 20:51:39
我有多個具有匹配多級索引的命名 Pandas 系列數(shù)據(jù)集SeriesA = L1 L2 L3    value_a1   L2 L3    value_a2      L3    value_a3SeriesA.name = First_NameSeriesB =L1 L2 L3    Value_b1   L2 L3    Value_b2      L3    Value_b3SeriesB.name = Second_Name我想要做的是在連接它們之前將系列名稱添加到現(xiàn)有系列索引中。預(yù)期的輸出應(yīng)該是SeriesAB =L1  L2  L3 First_name    value_a1    L2  L3 First_name    value_a2        L3 First_name    value_a3L1  L2  L3 Second_name   value_b1    L2  L3 Second_name   value_b2        L3 Second_name   value_b3我用 pd.join、pd.merge、pd.concat 嘗試了各種方法,但名稱似乎是癥結(jié)所在。這樣做的目的是在將名稱值轉(zhuǎn)換為數(shù)據(jù)框之前合并名稱值,以便數(shù)據(jù)看起來像這樣。我猜 unstack 將是解決這個問題的方法。final_data =            First_name  Second_nameL1  L2  L3  value_a1    value_b1    L2  L3  value_a2    value_b2        L3  value_a3    value_b3我也想避免這個輸出Unwanted =                First_Name   Second_NameL1   L2   L3   value_a1     NaN     L2   L3   value_a2     NaN          L3   value_a3     NaNL1   L2   L3   NaN          value_b1     L2   L3   NaN          value_b2          L3   NaN          value_b3 
查看完整描述

1 回答

?
GCT1015

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


查看完整回答
反對 回復(fù) 2022-06-22
  • 1 回答
  • 0 關(guān)注
  • 123 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號