请考虑以下数据框:
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
然后将其转换为多索引,但是对我来说,最容易用组标签将数据表示为列而不是行。
答案 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