Python DataFrame将行转换为列

时间:2016-09-15 14:11:39

标签: python pandas dataframe

我有一个存储有关特定对象和日期信息的csv。

Device  Date        Category    Amount
Pen     01/01/2014  A           12
Pen     01/01/2014  B           42
Pen     01/01/2014  C           10
Pen     01/01/2014  D           5
Pen     02/01/2014  A           7
Pen     02/01/2014  B           52
Pen     02/01/2014  C           1
Pen     02/01/2014  D           7
Pencil  01/01/2014  A           22
Pencil  01/01/2014  B           42
Pencil  01/01/2014  C           70
Pencil  01/01/2014  D           8

我想将其读入DataFrame,并将Category设为列,并为特定设备设置Amounts,并将其排成一行。这将使数据集更小。

Device  Date        A   B   C   D
Pen    01/01/2014   12  42  10  5
Pen    02/01/2014   7   52  1   7
Pencil  01/01/2014  22  42  70  8

2 个答案:

答案 0 :(得分:5)

您可以使用pivot_table将要保留的列设置为index,将转到标题的列设置为columns,将填充输出中的单元格的列设置为values数据框设置为df.pivot_table(index=['Device', 'Date'], columns='Category', values='Amount').reset_index() # Category Device Date A B C D # 0 Pen 01/01/2014 12 42 10 5 # 1 Pen 02/01/2014 7 52 1 7 # 2 Pencil 01/01/2014 22 42 70 8

awk

答案 1 :(得分:2)

使用groupbyunstack

df.groupby(['Device', 'Date', 'Category'])['Amount'].sum().unstack().reset_index()

enter image description here