【问题标题】:How can I breakdown a row in csv with pandas in python? [duplicate]如何在 python 中使用 pandas 分解 csv 中的一行? [复制]
【发布时间】:2019-05-08 00:00:16
【问题描述】:

我正在处理熊猫的 csv。我试图打破这样的行:

| col1  | col2  | jan | feb | mar |
|-------|-------|-----|-----|-----|
| name1 | place | 23  | 32  | 42  |
| name2 | place | 43  | 666 | 3   |
| name3 | place | 2   | 532 | 420 |

进入这个:

| col1  | col2  |months | quantity |
|-------|-------|-------|----------|
| name1 | place | jan   | 23       |
| name1 | place | feb   | 32       |
| name1 | place | mar   | 42       |
| name2 | place | jan   | 43       |
| name2 | place | feb   | 666      |
| name2 | place | mar   | 3        |
| name3 | place | jan   | 2        |
| name3 | place | feb   | 532      |
| name3 | place | mar   | 420      |

有什么函数可以在 pandas 上分解行吗?

pandas.melt() 无法按我的意愿工作,因为它没有创建我想要的订单。

【问题讨论】:

  • 这是unpivot 的典型案例,在pandas 中我们称之为melt。使用以下命令获取输出:pd.melt(df, id_vars=['col1', 'col2'])
  • @Erfan 而melt 产生相同的 set 数据,订单与 OP 要求的不同,这可能很重要,也可能不重要。
  • @QuangHoang 添加.sort_values('col1')
  • @DYZ 真的吗?如果 col1 在原始数据框中没有排序怎么办?
  • @QuangHoang 然后,不:)

标签: python pandas csv


【解决方案1】:

试试:

df.set_index(['col1','col2']).stack().reset_index()

之后您可能需要重命名某些列。

【讨论】:

    猜你喜欢
    • 2020-05-03
    • 1970-01-01
    • 2017-10-30
    • 2020-06-02
    • 1970-01-01
    • 2020-11-02
    • 1970-01-01
    • 2017-07-11
    • 2019-08-27
    相关资源
    最近更新 更多