pandas.DataFrame.to_records#
- DataFrame.to_records(index=True, column_dtypes=None, index_dtypes=None)[源代码][源代码]#
将 DataFrame 转换为 NumPy 记录数组。
如果请求,索引将作为记录数组的第一个字段包含在内。
- 参数:
- 索引布尔值, 默认为 True
在结果记录数组中包含索引,存储在 ‘index’ 字段中或使用索引标签(如果已设置)。
- column_dtypesstr, type, dict, 默认 None
如果是字符串或类型,则为存储所有列的数据类型。如果是字典,则为列名和索引(从零开始)到特定数据类型的映射。
- index_dtypesstr, type, dict, 默认 None
如果是一个字符串或类型,则是存储所有索引级别的数据类型。如果是一个字典,则是索引级别名称和索引(从零开始)到特定数据类型的映射。
此映射仅在 index=True 时应用。
- 返回:
- numpy.rec.recarray
带有 DataFrame 标签作为字段和 DataFrame 每一行作为条目的 NumPy ndarray。
参见
DataFrame.from_records
将结构化或记录 ndarray 转换为 DataFrame。
numpy.rec.recarray
一个允许使用属性进行字段访问的 ndarray,类似于电子表格中的类型列。
例子
>>> df = pd.DataFrame({"A": [1, 2], "B": [0.5, 0.75]}, index=["a", "b"]) >>> df A B a 1 0.50 b 2 0.75 >>> df.to_records() rec.array([('a', 1, 0.5 ), ('b', 2, 0.75)], dtype=[('index', 'O'), ('A', '<i8'), ('B', '<f8')])
如果 DataFrame 索引没有标签,则 recarray 字段名称设置为 ‘index’。如果索引有标签,则使用该标签作为字段名称:
>>> df.index = df.index.rename("I") >>> df.to_records() rec.array([('a', 1, 0.5 ), ('b', 2, 0.75)], dtype=[('I', 'O'), ('A', '<i8'), ('B', '<f8')])
索引可以从记录数组中排除:
>>> df.to_records(index=False) rec.array([(1, 0.5 ), (2, 0.75)], dtype=[('A', '<i8'), ('B', '<f8')])
可以为列指定数据类型:
>>> df.to_records(column_dtypes={"A": "int32"}) rec.array([('a', 1, 0.5 ), ('b', 2, 0.75)], dtype=[('I', 'O'), ('A', '<i4'), ('B', '<f8')])
也适用于索引:
>>> df.to_records(index_dtypes="<S2") rec.array([(b'a', 1, 0.5 ), (b'b', 2, 0.75)], dtype=[('I', 'S2'), ('A', '<i8'), ('B', '<f8')])
>>> index_dtypes = f"<S{df.index.str.len().max()}" >>> df.to_records(index_dtypes=index_dtypes) rec.array([(b'a', 1, 0.5 ), (b'b', 2, 0.75)], dtype=[('I', 'S1'), ('A', '<i8'), ('B', '<f8')])