首页 > 解决方案 > 根据python中的键将键值数据从数据帧转置到列

问题描述

我有来自网站的 XML 格式的输入,并且能够将其转换为以下格式的数据框,您能帮我了解如何编写 python 代码将数据转换为预期的输出,如下所示.

数据框中的数据

    pDate                          | pname             |meta_key     |meta_value
0   Mon, 19 Jul 2021 06:13:05 +0000|2021-07-17-67433-43|access_code  |67433
1   Mon, 19 Jul 2021 06:13:05 +0000|2021-07-17-67433-43|email        |xxx@dddd.com
2   Mon, 19 Jul 2021 06:13:05 +0000|2021-07-17-67433-43|activity_id  |43
3   Mon, 19 Jul 2021 06:13:05 +0000|2021-07-17-67433-43|duration_step|50
4   Mon, 19 Jul 2021 06:13:05 +0000|2021-07-17-67433-43|type         |M
5   Mon, 19 Jul 2021 06:13:05 +0000|2021-07-17-67433-43|multiplier   |122
6   Mon, 19 Jul 2021 06:13:05 +0000|2021-07-17-67433-43|date         |2021-07-17
7   Mon, 19 Jul 2021 06:13:05 +0000|2021-07-17-13254-42|access_code  |13254
8   Mon, 19 Jul 2021 06:13:05 +0000|2021-07-17-13254-42|email        |xxxx@ccc.com
9   Mon, 19 Jul 2021 06:13:05 +0000|2021-07-17-13254-42|activity_id  |42

数据框中的预期输出可用于图表

pDate                          | name               | access_code | email       | activity_id | duration_step | type | multiplier |date | 
Mon, 19 Jul 2021 06:13:05 +0000|2021-07-17-67433-43 | 67433       |xxx@dddd.com |43           |50             |    M |. 122.      | 2021-07-17

标签: pythondataframekey-value

解决方案


尝试.pivot

print(
    df.pivot(index=["pDate", "pname"], columns="meta_key", values="meta_value")
    .reset_index()
    .rename_axis("", axis=1)
)

印刷:

                             pDate                pname access_code activity_id        date duration_step         email multiplier type
0  Mon, 19 Jul 2021 06:13:05 +0000  2021-07-17-13254-42       13254          42         NaN           NaN  xxxx@ccc.com        NaN  NaN
1  Mon, 19 Jul 2021 06:13:05 +0000  2021-07-17-67433-43       67433          43  2021-07-17            50  xxx@dddd.com        122    M

推荐阅读