Python pandas.DataFrame.to_records函数方法的使用

Pandas是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。Pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。本文主要介绍一下Pandas中pandas.DataFrame.to_records方法的使用。

DataFrame.to_records(index=True, column_dtypes=None, index_dtypes=None)    

 [source]

DataFrame转换为一个NumPy记录数组。

如果需要,Index将被包括为记录数组的第一个字段。

参数:

index :bool, 默认为 True

如果设置,在结果记录数组中包括索引,

存储在“index”字段或使用索引标签。

column_dtypes :str, type, dict, 默认为 None

新版本为0.24.0。

如果是字符串或类型,则数据类型要存储所有列。

如果是字典,

则列名称和索引(zero-indexed)到特定数据类型的映射。

index_dtypesstr, type, dict, 默认为 None

如果是字符串或类型,则该数据类型要存储所有索引级别。

如果是字典,

索引级别名称和索引(zero-indexed)到特定数据类型的映射。

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

返回值:

numpy.recarray

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

例子

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

推荐阅读
cjavapy编程之路首页