【问题标题】:Python DataFrame Transform Rows to ColumnPython DataFrame 将行转换为列
【发布时间】:2016-09-15 14:11:39
【问题描述】:

我有一个 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

【问题讨论】:

标签: python pandas dataframe


【解决方案1】:

您可以使用pivot_table,其中要保留的列设置为index,转到标题的列设置为columns,填充输出数据框中单元格的列设置为@ 987654324@:

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

【讨论】:

    【解决方案2】:

    使用groupbyunstack

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

    【讨论】:

      猜你喜欢
      • 2020-10-23
      • 2016-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-24
      • 2019-05-19
      • 1970-01-01
      • 2021-09-25
      相关资源
      最近更新 更多