Pandas:如何将轴添加到数据框

时间:2018-03-15 02:31:13

标签: python pandas dataframe

我想将数据框的形状从new AsyncTask<Void, Void, Void>() { protected Void doInBackground(Void... unused) { // Background Code return null; } protected void onPostExecute(Void unused) { setUpSeekBar(); fillCards(); // other stuff } }.execute(); 更改为(x,y)(1,x,y)(x,1,y)。我知道在numpy中我可以做(x,y,1)这样的事情,我想知道如何为数据帧实现相同的目标?

1 个答案:

答案 0 :(得分:2)

不推荐使用pandas.panel对象。我们使用pandas.MultiIndex来处理更高维度的数据。

考虑数据框df

df = pd.DataFrame(1, list('abc'), list('xyz'))
df

   x  y  z
a  1  1  1
b  1  1  1
c  1  1  1

添加级别

以下是添加关卡和维度的各种方法。

axis=0, level=0

pd.concat([df], keys=['A'])

     x  y  z
A a  1  1  1
  b  1  1  1
  c  1  1  1
df.set_index(pd.MultiIndex.from_product([['B'], df.index]))

     x  y  z
B a  1  1  1
  b  1  1  1
  c  1  1  1

axis=0, level=1

pd.concat([df], keys=['A']).swaplevel(0, 1)

     x  y  z
a A  1  1  1
b A  1  1  1
c A  1  1  1
df.set_index(pd.MultiIndex.from_product([df.index, ['B']]))

     x  y  z
a B  1  1  1
b B  1  1  1
c B  1  1  1

axis=1, level=0

pd.concat([df], axis=1, keys=['A'])

   A      
   x  y  z
a  1  1  1
b  1  1  1
c  1  1  1
df.set_axis(pd.MultiIndex.from_product([['B'], df.columns]), axis=1, inplace=False)

   B      
   x  y  z
a  1  1  1
b  1  1  1
c  1  1  1

axis=1, level=1

pd.concat([df], axis=1, keys=['A']).swaplevel(0, 1, 1)

   x  y  z
   A  A  A
a  1  1  1
b  1  1  1
c  1  1  1
df.set_axis(pd.MultiIndex.from_product([df.columns, ['B']]), axis=1, inplace=False)

   x  y  z
   B  B  B
a  1  1  1
b  1  1  1
c  1  1  1