目录

一、pandas.DataFrame.iterrows

二、pandas.DataFrame.itertuples

三、pandas.DataFrame.items


pandas 逐行/逐列 遍历数据有以下三种方法:

一、pandas.DataFrame.iterrows

DataFrame.iterrows()                                                                                                            [source]

按行遍历,将DataFrame的每一行迭代为(index, Series)对。

输出:index:label或label元组

                      行的索引。对于一个MultiIndex则需要一个元组。

           data:Series

                      行的数据作为Series。

注意


  1. 因为 interrows为每一行返回一个 Series,所以它不会跨行保留数据类型(对于数据帧,数据类型跨列保留)。例如,

    >>> df = pd.DataFrame([[1, 1.5]], columns=['int', 'float'])
    >>> row = next(df.iterrows())[1]
    >>> row
    int      1.0
    float    1.5
    Name: 0, dtype: float64
    >>> print(row['int'].dtype)
    float64
    >>> print(df['int'].dtype)
    int64
    

    要在遍历行时保留数据类型,最好使用itertuples() ,该函数会返回依据values的命名元组,并且通常比iterrows()效率高。

  2. 永远不应该修改你正在迭代的东西。这不能保证在所有情况下都有效。根据数据类型,迭代器返回的是数据的副本而不是数据视图,写入它不会有任何效果。

二、pandas.DataFrame.itertuples

DataFrame.itertuples(index=Truename='Pandas')                                                             [source]

按行遍历,将DataFrame的每一行迭代为元组。

参数:index:bool, 缺省为 True

                如果为真,则将索引作为元组的第一个元素返回。

           name:str 或 None, 缺省为 “Pandas”

                对于命名元组返回其名称,或 对返回常规元组返回None。

返回:iterator

                为 DataFrame 中的每一行迭代命名元组的对象,第一个字段可能是索引,

                后面的字段是列的value值。

注意


如果列名是无效的 Python 标识符、重复的或以下划线开头,它们将被重命名为位置名称。 

例子


 

>>> df = pd.DataFrame({'num_legs': [4, 2], 'num_wings': [0, 2]},
...                   index=['dog', 'hawk'])
>>> df
      num_legs  num_wings
dog          4          0
hawk         2          2
>>> for row in df.itertuples():
...     print(row)
...
Pandas(Index='dog', num_legs=4, num_wings=0)
Pandas(Index='hawk', num_legs=2, num_wings=2)

通过将索引参数设置为 False,我们可以删除作为元组的第一个元素的 Index:

>>> for row in df.itertuples(index=False):
...     print(row)
...
Pandas(num_legs=4, num_wings=0)
Pandas(num_legs=2, num_wings=2)

通过设置name参数,我们可以为生成的命名元组设置自定义名称:

>>> for row in df.itertuples(name='Animal'):
...     print(row)
...
Animal(Index='dog', num_legs=4, num_wings=0)
Animal(Index='hawk', num_legs=2, num_wings=2)

三、pandas.DataFrame.items

DataFrame.items()                                                                                                                [source]

按列遍历,将DataFrame的每一列迭代为(列名, Series)

输入:标签:object

                正在迭代的 DataFrame 的列名。

           内容:Series

                属于每个标签的列条目,作为Series

例子


df = pd.DataFrame({'species': ['bear', 'bear', 'marsupial'],
...                   'population': [1864, 22000, 80000]},
...                   index=['panda', 'polar', 'koala'])
>>> df
        species   population
panda   bear      1864
polar   bear      22000
koala   marsupial 80000
>>> for label, content in df.items():
...     print(f'label: {label}')
...     print(f'content: {content}', sep='\n')
...
label: species
content:
panda         bear
polar         bear
koala    marsupial
Name: species, dtype: object
label: population
content:
panda     1864
polar    22000
koala    80000
Name: population, dtype: int64

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐