pandas实现按行遍历dataframe的方法(itertuples,iterrows)
1. 以命名元组的形式遍历DataFrame行
pandas.DataFrame.itertuples
DataFrame.itertuples(index=True, name='Pandas')
关键字参数:index
默认为True,所需为布尔值。当值为True时,将索引作为元组的第一个元素返回。
关键字参数:name
默认为“Pandas”,所需为字符串或None。命名返回的元组的名称,当为None时,返回普通元组。
返回:iterator
迭代器:用于返回DataFrame每行形成的命名元组,命名元组的第一个字段可能是索引,其余字段是列值。
tips:当列名是无效的Python标识符、或重复值、或以下划线开头时,该列名会以当前位置重命名。
示例:简单使用itertuples,不设置index和name
>>> 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)
示例:设置index=False以取消索引为首个字段
>>> for row in df.itertuples(index=False): ... print(row) ... Pandas(num_legs=4, num_wings=0) Pandas(num_legs=2, num_wings=2)
示例:自定义元组名称
>>> 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)
2. 以 (index, Series) 对的形式遍历 DataFrame行
pandas.DataFrame.iterrows
返回:index
标签或标签元组。即行索引或多维索引元组。
返回:Series
以Series形式展示该行的数据。
示例:直接使用iterrows
由于 iterrows 会为每一行返回一个 Series,因此不会跨行保留 dtypes(DataFrames 的 dtypes 会跨列保留)。
>>> 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
为了在遍历行时保留 dtypes,最好使用 itertuples(),它返回值的命名元组,通常比 iterrows 更快。
tips:永远不要修改正在迭代的内容。这并不能保证在所有情况下都有效。根据数据类型的不同,迭代器返回的是副本而不是视图,对其写入不会有任何影响。
到此这篇关于pandas实现按行遍历dataframe的方法(itertuples,iterrows)的文章就介绍到这了,更多相关pandas 按行遍历dataframe内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Python报错AssertionError:can only test a c
这篇文章主要介绍了Python报错AssertionError:can only test a child proc问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2023-09-09终于搞懂了Python中super(XXXX, self).__init__()的作用了
本文主要介绍了终于搞懂了Python中super(XXXX, self).__init__()的作用了,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2022-08-08
最新评论