pandas逐行/列 遍历Dataframe的三种方式

目录

一、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

  • 4
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值