【Pandas】pandas DataFrame from_records
Pandas2.2 DataFrame
Serialization IO conversion
方法 | 描述 |
---|---|
DataFrame.from_dict(data[, orient, dtype, …]) | 用于从 字典(dict) 构建 DataFrame 的类方法 |
DataFrame.from_records(data[, index, …]) | 用于将 结构化数据(如列表的元组、NumPy 结构化数组)转换为 DataFrame |
pandas.DataFrame.from_records()
pandas.DataFrame.from_records(data, index=None, exclude=None, columns=None, coerce_float=False, nrows=None)
是 pandas
提供的一个 类方法,用于将 结构化数据(如列表的元组、NumPy 结构化数组)转换为 DataFrame。
它特别适用于从数据库查询结果、CSV 文件、JSON 数据等 记录式(record-style)数据 创建 DataFrame。
📌 方法签名
pandas.DataFrame.from_records(data, index=None, exclude=None, columns=None, coerce_float=False, nrows=None)
参数说明:
参数 | 类型 | 描述 |
---|---|---|
data | sequence 或 iterable | 一个可迭代对象,每个元素是一个序列或字典,代表一行数据 |
index | list-like(可选) | 指定行索引标签 |
exclude | list(可选) | 排除的字段名列表 |
columns | list(可选) | 指定列名顺序 |
coerce_float | bool,默认 False | 是否尝试将数值字符串自动转为浮点数 |
nrows | int(可选) | 读取的最大行数 |
✅ 示例及结果
示例 1:基本用法(从元组列表创建 DataFrame)
import pandas as pd# 元组列表,每行表示一条记录
data = [('Alice', 25, 'Engineer'),('Bob', 30, 'Manager'),('Charlie', 35, 'Designer')
]df = pd.DataFrame.from_records(data)
print(df)
输出:
0 1 2
0 Alice 25 Engineer
1 Bob 30 Manager
2 Charlie 35 Designer
默认情况下,列名是整数索引(0, 1, 2…),你可以通过
columns
指定列名。
示例 2:指定列名
df = pd.DataFrame.from_records(data, columns=['Name', 'Age', 'Job'])
print(df)
输出:
Name Age Job
0 Alice 25 Engineer
1 Bob 30 Manager
2 Charlie 35 Designer
示例 3:使用 NumPy 结构化数组
如果你有 NumPy 的结构化数组,可以直接传入:
import numpy as npdtype = [('name', 'U10'), ('age', 'i4'), ('job', 'U10')]
data = np.array([('Alice', 25, 'Engineer'), ('Bob', 30, 'Manager')], dtype=dtype)df = pd.DataFrame.from_records(data)
print(df)
输出:
name age job
0 Alice 25 Engineer
1 Bob 30 Manager
示例 4:指定索引列(index
)
你可以指定某一列为行索引:
df = pd.DataFrame.from_records(data, index='name')
print(df)
输出:
age job
name
Alice 25 Engineer
Bob 30 Manager
示例 5:限制读取行数(nrows
)
只读取前 N 行数据:
df = pd.DataFrame.from_records(data, columns=['Name', 'Age', 'Job'], nrows=1)
print(df)
输出:
Name Age Job
0 Alice 25 Engineer
示例 6:排除某些列(exclude
)
df = pd.DataFrame.from_records(data, exclude=['age'], index='name')
print(df)
输出:
job
name
Alice Engineer
Bob Manager
📝 总结
特性 | 说明 |
---|---|
方法名 | DataFrame.from_records() |
输入类型 | 可迭代的记录结构(如元组列表、结构化数组) |
主要用途 | 将“记录”格式的数据快速转换为 DataFrame |
支持功能 | 自定义列名、设置索引、排除列、限制行数、强制转换浮点数 |
常见场景 | 数据库查询结果、日志文件解析、结构化数据导入 |
🔁 与 DataFrame(data)
的区别
功能 | pd.DataFrame(data) | pd.DataFrame.from_records(data) |
---|---|---|
支持输入 | 字典、列表、元组等 | 记录式结构(如元组列表、结构化数组) |
列名控制 | 需手动指定 columns | 可通过 columns 控制列名 |
索引支持 | 不够灵活 | 支持指定 index |
性能 | 一般 | 更适合处理大型结构化数据 |