Python - 将日期:价格列表转换为新行

问题描述 投票:0回答:1

我正在尝试将以下列转换为新行:

身份证 价格
001 [“三月:59”,“四月:64”,“五月:62”]
002 [“一月:55”等]

id 日期 价格
001 三月 59
001 四月 64
001 五月 62
002 一月 55

日期:价格对不以传统字典格式存储,如以下解决方案:

使用 Pandas 将字典键转换为行并显示单列中的所有值

我设法将键:值对放入单独的行中,例如:

身份证 价格
001 三月:59
001 四月:64

并且可以使用字符串操作将它们分成两列,但这感觉效率很低,而不是实际使用键:值对。有人可以帮忙吗?

python pandas list dictionary key-value
1个回答
0
投票

尝试:

# apply ast.literal_eval if necessary:
from ast import literal_eval

df["Prices"] = df["Prices"].apply(literal_eval)

df = df.explode("Prices")
df[["date", "price"]] = df.pop("Prices").str.split(":", n=1, regex=False).to_list()

print(df)

打印:

   Id   date price
0   1  March    59
0   1  April    64
0   1    May    62
1   2    Jan    55
© www.soinside.com 2019 - 2024. All rights reserved.