pandas.DataFrame.to_records#

DataFrame.to_records(index=True, column_dtypes=None, index_dtypes=None)[源代码]#

将 DataFrame 转换为 NumPy 记录数组。

如果请求,索引将作为记录数组的第一个字段包含在内。

参数:
indexbool, 默认 True

在生成的记录数组中包含索引,存储在“index”字段中或使用索引标签(如果已设置)。

column_dtypesstr, type, dict, 默认 None

如果为字符串或类型,则为存储所有列的数据类型。如果为字典,则为列名称和索引(零索引)到特定数据类型的映射。

index_dtypesstr, type, dict, 默认 None

如果为字符串或类型,则为存储所有索引级别的所有索引数据类型。如果为字典,则为索引级别名称和索引(零索引)到特定数据类型的映射。

此映射仅在 index=True 时应用。

返回:
numpy.rec.recarray

NumPy ndarray,其中 DataFrame 标签作为字段,DataFrame 的每一行作为条目。

另请参阅

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')])