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

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

將兩個(gè)數(shù)據(jù)框與分層列合并

將兩個(gè)數(shù)據(jù)框與分層列合并

拉莫斯之舞 2023-09-05 20:57:02
這是我第一次在 pandas 中使用多重索引,我需要一些幫助來合并兩個(gè)具有分層列的數(shù)據(jù)幀。這是我的兩個(gè)數(shù)據(jù)框:col_index = pd.MultiIndex.from_product([['a', 'b', 'c'], ['w', 'x']])df1 = pd.DataFrame(np.ones([4,6]),columns=col_index, index=range(4))     a         b         c          w    x    w    x    w    x0  1.0  1.0  1.0  1.0  1.0  1.01  1.0  1.0  1.0  1.0  1.0  1.02  1.0  1.0  1.0  1.0  1.0  1.03  1.0  1.0  1.0  1.0  1.0  1.0df2 = pd.DataFrame(np.zeros([2,6]),columns=col_index, index=range(2))     a         b         c          w    x    w    x    w    x0  0.0  0.0  0.0  0.0  0.0  0.01  0.0  0.0  0.0  0.0  0.0  0.0當(dāng)我使用合并方法時(shí),我得到以下結(jié)果:pd.merge(df1,df2, how='left', suffixes=('', '_2'), left_index = True, right_index= True ))     a         b         c       a_2       b_2       c_2          w    x    w    x    w    x    w    x    w    x    w    x0  1.0  1.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.01  1.0  1.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.02  1.0  1.0  1.0  1.0  1.0  1.0  NaN  NaN  NaN  NaN  NaN  NaN3  1.0  1.0  1.0  1.0  1.0  1.0  NaN  NaN  NaN  NaN  NaN  NaN但我想在較低級別上合并兩個(gè)數(shù)據(jù)幀,后綴對 ['w', 'x'] 生效,如下所示:     a                   b                   c                    w  w_2    x  x_2    w  w_2    x  x_2    w  w_2    x  x_20  1.0  0.0  1.0  0.0  1.0  0.0  1.0  0.0  1.0  0.0  1.0  0.01  1.0  0.0  1.0  0.0  1.0  0.0  1.0  0.0  1.0  0.0  1.0  0.02  1.0  NaN  1.0  NaN  1.0  NaN  1.0  NaN  1.0  NaN  1.0  NaN3  1.0  NaN  1.0  NaN  1.0  NaN  1.0  NaN  1.0  NaN  1.0  NaN
查看完整描述

1 回答

?
忽然笑

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超5個(gè)贊

您可以將joinormergeswaplevel()or 一起使用reorder_levels。然后使用.sort_index()和 傳遞axis=1來按索引列排序。

  • .join()當(dāng)您像這樣對索引進(jìn)行合并時(shí)會(huì)更好。

  • .swaplevel()當(dāng)有兩個(gè)級別時(shí)更好(如本例),而當(dāng).reorder_levels()有 3 個(gè)或更多級別時(shí)更好。

以下是這些方法的 4 種組合。對于這個(gè)具體的例子,我認(rèn)為.join()/.swaplevel()是最簡單的(參見最后一個(gè)例子):

df3 = (df1.reorder_levels([1,0],axis=1)

       .join(df2.reorder_levels([1,0],axis=1), rsuffix='_2')

       .reorder_levels([1,0],axis=1).sort_index(axis=1, level=[0, 1]))

df3

Out[1]: 

     a                   b                   c               

     w  w_2    x  x_2    w  w_2    x  x_2    w  w_2    x  x_2

0  1.0  0.0  1.0  0.0  1.0  0.0  1.0  0.0  1.0  0.0  1.0  0.0

1  1.0  0.0  1.0  0.0  1.0  0.0  1.0  0.0  1.0  0.0  1.0  0.0

2  1.0  NaN  1.0  NaN  1.0  NaN  1.0  NaN  1.0  NaN  1.0  NaN

3  1.0  NaN  1.0  NaN  1.0  NaN  1.0  NaN  1.0  NaN  1.0  NaN


df3 = (pd.merge(df1.reorder_levels([1,0],axis=1),

                df2.reorder_levels([1,0],axis=1),

                how='left', left_index=True, right_index=True, suffixes = ('', '_2'))

                .reorder_levels([1,0],axis=1).sort_index(axis=1, level=[0, 1]))

df3

Out[2]: 

     a                   b                   c               

     w  w_2    x  x_2    w  w_2    x  x_2    w  w_2    x  x_2

0  1.0  0.0  1.0  0.0  1.0  0.0  1.0  0.0  1.0  0.0  1.0  0.0

1  1.0  0.0  1.0  0.0  1.0  0.0  1.0  0.0  1.0  0.0  1.0  0.0

2  1.0  NaN  1.0  NaN  1.0  NaN  1.0  NaN  1.0  NaN  1.0  NaN

3  1.0  NaN  1.0  NaN  1.0  NaN  1.0  NaN  1.0  NaN  1.0  NaN


df3 = (pd.merge(df1.swaplevel(axis=1),

                df2.swaplevel(axis=1),

                how='left', left_index=True, right_index=True, suffixes = ('', '_2'))

                .swaplevel(axis=1).sort_index(axis=1, level=[0, 1]))

df3

Out[3]: 

     a                   b                   c               

     w  w_2    x  x_2    w  w_2    x  x_2    w  w_2    x  x_2

0  1.0  0.0  1.0  0.0  1.0  0.0  1.0  0.0  1.0  0.0  1.0  0.0

1  1.0  0.0  1.0  0.0  1.0  0.0  1.0  0.0  1.0  0.0  1.0  0.0

2  1.0  NaN  1.0  NaN  1.0  NaN  1.0  NaN  1.0  NaN  1.0  NaN

3  1.0  NaN  1.0  NaN  1.0  NaN  1.0  NaN  1.0  NaN  1.0  NaN


df3 = (df1.swaplevel(i=0,j=1, axis=1)

       .join(df2.swaplevel(axis=1), rsuffix='_2')

       .swaplevel(axis=1).sort_index(axis=1, level=[0, 1]))

df3

Out[4]: 

     a                   b                   c               

     w  w_2    x  x_2    w  w_2    x  x_2    w  w_2    x  x_2

0  1.0  0.0  1.0  0.0  1.0  0.0  1.0  0.0  1.0  0.0  1.0  0.0

1  1.0  0.0  1.0  0.0  1.0  0.0  1.0  0.0  1.0  0.0  1.0  0.0

2  1.0  NaN  1.0  NaN  1.0  NaN  1.0  NaN  1.0  NaN  1.0  NaN

3  1.0  NaN  1.0  NaN  1.0  NaN  1.0  NaN  1.0  NaN  1.0  NaN


查看完整回答
反對 回復(fù) 2023-09-05
  • 1 回答
  • 0 關(guān)注
  • 143 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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