转置多索引数据帧

时间:2019-12-12 22:27:32

标签: python pandas

请考虑以下数据框:

data = {
  'A': [0, 0, 0, 1, 1, 1, 1],
  'B': list('ABCABCD'),
  'C': range(12, 19)
}
pd.DataFrame(data).set_index(['A', 'B'])

      C
A B    
0 A  12
  B  13
  C  14
1 A  15
  B  16
  C  17
  D  18

我需要将此数据帧转换为

   0    1
A  12   15
B  13   16
C  14   17
D  NaN  18

上下文:我正在执行groupby操作,并且apply函数返回一个序列。 groupby然后将其转换为多索引,但是对我来说,最容易用组标签将数据表示为列而不是行。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用pd.pivot_table()

import pandas as pd 
import matplotlib.pyplot as plt
data = {'A': [0, 0, 0, 1, 1, 1, 1],'B': list('ABCABCD'),'C': range(12, 19)}
df = pd.DataFrame(data).set_index(['A', 'B'])
print(df)
new_df = pd.pivot_table(df,columns=['A'],index=['B'],values=['C'])
print(new_df)

输出:

A     0     1
B
A  12.0  15.0
B  13.0  16.0
C  14.0  17.0
D   NaN  18.0