pandas逐行/列 遍历Dataframe的三种方式
目录
pandas 逐行/逐列 遍历数据有以下三种方法:
一、pandas.DataFrame.iterrows
DataFrame.iterrows() [source]
按行遍历,将DataFrame的每一行迭代为(index, Series)对。
输出:index:label或label元组
行的索引。对于一个MultiIndex则需要一个元组。
data:Series
行的数据作为Series。
注意
-
因为
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()效率高。
-
你永远不应该修改你正在迭代的东西。这不能保证在所有情况下都有效。根据数据类型,迭代器返回的是数据的副本而不是数据视图,写入它不会有任何效果。
二、pandas.DataFrame.itertuples
DataFrame.itertuples(index=True, name='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
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)