python - 从具有列表值的 pandas 数据帧创建稀疏数据帧
问题描述
我有一个包含 ID、日期和付款的 pandas 数据框,如下所示。日期以月为单位记录,并对应行中同一指数的付款。
ID Dates payments
A ['02-2010','05-2010'] [45,50]
B ['02-2010','04-2010','06-2010'] [42,48,52]
C ['03-2010','04-2010','05-2010','06-2010'] [39,38,39,42]
我想以此创建一个稀疏的 Dataframe,以 ID 和 Date 作为我的维度,当当月没有付款时,用 0 填充单元格。结果应该是这样的。
'02-2010' '03-2010' '04-2010' '05-2010' '06-2010'
A 45 0 0 50 0
B 42 0 48 0 52
C 0 39 38 39 42
解决方案
尝试:
# transform dates, payments to python list
#from ast import literal_eval
#df["Dates"] = df["Dates"].apply(literal_eval)
#df["payments"] = df["payments"].apply(literal_eval)
df = df.explode(["Dates", "payments"])
print(df.pivot(index="ID", columns="Dates", values="payments").fillna(0))
印刷:
Dates 02-2010 03-2010 04-2010 05-2010 06-2010
ID
A 45 0 0 50 0
B 42 0 48 0 52
C 0 39 38 39 42
推荐阅读
- bert-language-model - 寻找 max_embeddings 为 1024 而不是 512 的 LayoutLM 模型
- javascript - 为什么 Vuejs 没有及时更新元素?
- flutter - 我想实现相机和自定义油漆
- javascript - 如果电子邮件已注册,Firebase SDK Facebook 登录将无法正常工作
- java - 尝试在 Minecraft 中播放声音会导致 [Client thread/WARN]: Unable to play unknown soundEvent
- html - 网站上的照片只显示一行,我需要添加多行
- php - WooCommerce 如何获取我的帐户项目列表?
- java - 停止 Java 服务器按顺序发送消息
- c++ - C++ QT 库模块
- html - 使css动画无限运行