【问题标题】:Add x amount of rows to dataframe [duplicate]将x行添加到数据框[重复]
【发布时间】:2022-01-27 20:50:21
【问题描述】:

我有一个看起来像这样的数据框,它是从 excel 文档中导入的。文档的格式是标准化的,总是这样。

    Number  |  Country  |  2020-10-30  |  2020-10-31  |  2020-11-01  |  ------
----------------------------------------------------------------------------------------
0    123    |    EN     |    5431.40   |  9112847.23  |   65432.42   |  ------
1    765    |    EN     |    2431.50   |   512267.43  |    1542.62   |  ------
2    345    |    EN     |     461.50   |  1512532.63  |   22552.12   |  ------

我想要的输出如下所示:

    Number  |  Country  |      Date    |    Amount    |
-----------------------------------------------------
0    123    |    EN     |  2020-10-30  |    5431.40   |
1    123    |    EN     |  2020-10-31  | 9112847.23   |
2    123    |    EN     |  2020-11-01  |   65432.42   |
3    765    |    EN     |  2020-10-30  |    2431.50   |
4    765    |    EN     |  2020-10-31  |  512267.43   |
5    765    |    EN     |  2020-11-01  |    1542.62   |

所以,我想复制第一个“数字”列及其行的次数与我有日期一样多,并将整个数据框转换为不同的格式。这将意味着,而不是拥有例如365 列和 3 行与第一个示例一样,我将有 4 列和 1095 行。有没有办法做到这一点?任何帮助表示赞赏。

【问题讨论】:

  • 为什么 Number=345 行在您的输出中消失了?

标签: python python-3.x pandas dataframe


【解决方案1】:

使用melt:

out = df.melt(['Number', 'Country'], var_name='Date', value_name='Amount')
print(out)

# Output
   Number Country        Date      Amount
0     123      EN  2020-10-30     5431.40
1     765      EN  2020-10-30     2431.50
2     345      EN  2020-10-30      461.50
3     123      EN  2020-10-31  9112847.23
4     765      EN  2020-10-31   512267.43
5     345      EN  2020-10-31  1512532.63
6     123      EN  2020-11-01    65432.42
7     765      EN  2020-11-01     1542.62
8     345      EN  2020-11-01    22552.12

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-19
    • 2017-08-21
    • 2019-10-29
    • 1970-01-01
    相关资源
    最近更新 更多