以下問題我得到了一個(gè)像這樣的數(shù)據(jù)幀:df = pd.DataFrame(columns=pd.MultiIndex(levels=[["foo","baa"],["x","y","z"]], labels=[[0,0,0,1,1,1],[0,1,2,0,1,2]]), index=[0,1,2,3], data=np.random.rand(4,6)) foo baa x y z x y z0 0.263780 0.942880 0.176744 0.914854 0.920735 0.5736921 0.601317 0.584691 0.288536 0.832064 0.095142 0.1860452 0.807323 0.075620 0.399703 0.936894 0.168441 0.4689843 0.871293 0.324817 0.395784 0.133541 0.365586 0.615219我想說 foo 到一個(gè)新的 DataFrame 完全空構(gòu)造如下:r_df = pd.DataFrame(index=df.index)Empty DataFrameColumns: []Index: [0, 1, 2, 3]它應(yīng)該是這樣的: foo x y z0 0.263780 0.942880 0.1767441 0.601317 0.584691 0.2885362 0.807323 0.075620 0.3997033 0.871293 0.324817 0.395784我是這樣嘗試的:for label in df.columns.levels[0]: data = df[label] for row in data.index: r_df.loc[row,(label,"x")] = data["x"] r_df.loc[row,(label,"y")] = data["y"] r_df.loc[row,(label,"z")] = data["z"]我認(rèn)為這可以工作,因?yàn)槎嗨饕梢员?tubles 引用,但它沒有。
1 回答

收到一只叮咚
TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超5個(gè)贊
嘗試使用以下方法df.xs從 multiIndex 中進(jìn)行選擇并保持水平:
r_df = df.xs('foo', axis=1, level=0, drop_level=False)
如果你想在下面追加一個(gè)新列,foo你可以這樣做:
df.loc[:,('foo','m')] = 0
如果您想在level=0(與 相同級別foo)追加一個(gè)新列
# with no col in level 1
df.loc[:, 'bar'] = 0
# with col in level 0 and 1
df.loc[:,('bar','m')] = 0
添加回答
舉報(bào)
0/150
提交
取消