假设我有一个如下所示的数据:
item | date | status
A 12-01 E
A 12-02 E
A 12-03 B
A 12-04 B
B 12-01 E
B 12-02 B
B 12-03 S
B 12-04 S
C 12-03 E
C 12-04 E
现在我想做的是制作如下数据:
item | 12-01 | 12-02 | 12-03 | 12-04
A E E B B
B E B S S
C E E
总而言之,我想将每一行作为项目的历史记录。 我听说这叫做'枢轴',但我不确定熊猫会“轻易”做到这一点。
任何人都可以帮我这个吗?!
答案 0 :(得分:3)
您可以使用pivot
:
traits
如果df = df.pivot(index='item', columns='date', values='status')
print (df)
date 12-01 12-02 12-03 12-04
item
A E E B B
B E B S S
C None None E E
item
中的date
重复使用pivot_table
,并使用某些汇总功能,例如','.join
或sum
:
print (df)
item date status
0 A 12-01 E <-duplicates A, 12-01
1 A 12-01 C <-duplicates A, 12-01
2 A 12-02 E
3 A 12-03 B
4 A 12-04 B
5 B 12-01 E
6 B 12-02 B
7 B 12-03 S
8 B 12-04 S
9 C 12-03 E
10 C 12-04 E
df = df.pivot_table(index='item', columns='date', values='status', aggfunc=','.join)
print (df)
date 12-01 12-02 12-03 12-04
item
A E,C E B B
B E B S S
C None None E E