python - 如何从 3 个元素元组列表中创建 Pandas 数据框?
问题描述
我正在尝试从具有 3 个元素的元组列表构建一个数据框,看起来像 [(name, date, score), ... ]。
我想将名称作为索引列,将日期作为列标题,分数是数据。以下是我所做的。
df = pd.DataFrame({'name':list({x[0] for x in data})}).set_index('name')
date_list = list({x[1] for x in data})
date_list.sort()
df = df.reindex(columns = date_list)
for x in data:
df.loc[x[0], x[1]] = x[2]
它工作,但由于大数据集,它需要一段时间。有没有更好的方法来构建它?
解决方案
这是pivot的一个用例:
In [1]: import pandas as pd
In [2]: from datetime import date, timedelta
In [3]: today = date.today()
In [4]: data = [("Andrew", today, 100), ("Yixing", today, 105), ("Bam", today + timedelta(days=1), 93
...: )]
In [5]: data
Out[5]:
[('Andrew', datetime.date(2021, 11, 11), 100),
('Yixing', datetime.date(2021, 11, 11), 105),
('Bam', datetime.date(2021, 11, 12), 93)]
In [17]: df = pd.DataFrame(data, columns=["name", "date", "score"])
In [18]: df
Out[18]:
name date score
0 Andrew 2021-11-11 100
1 Yixing 2021-11-11 105
2 Bam 2021-11-12 93
In [23]: df.pivot(index="name", columns="date")
Out[23]:
score
date 2021-11-11 2021-11-12
name
Andrew 100.0 NaN
Bam NaN 93.0
Yixing 105.0 NaN
推荐阅读
- typescript - 零个或所有可选但类型化的参数
- r - 用于汇总贷款数量的 R 函数
- mysql - 如何在mysql中正确利用索引的力量
- batch-file - findstr "^" 不起作用,但 "^^" 可以查找开始行
- r - 在 data.table 中描述 .SD 和 .SDcols 的更好方法是什么?
- c# - Unity 2D 中 Pixel Perfect Camera 和 Cinemachine 的问题
- node.js - 为什么一个 npm 模块会删除其他 npm 模块?
- ruby-on-rails - Spree Commerce 设置错误:“未知版本...(运行时错误)”
- c - 我无法使用 for 循环打印 char 数组的元素
- javascript - 如何使用 reactjs 从多个 API 获取搜索结果