[Python] DataFrame的遍历问题

[Python] DataFrame的遍历问题

  • 一、问题引出
  • 二、解决问题
    • 1、DataFrame.iteritems()
    • 2、DataFrame.iterrows()
    • 3、DataFrame.itertuples()

一、问题引出

导入数据,生成时间序列。

io = 'D:/PythonProject/ARIMA/sales_data.csv'
data = pd.read_csv(io, header=0, index_col='time')
time_series = pd.DataFrame(data)
time_series.index = pd.to_datetime(time_series.index)
# 输出前5个数据,此时Date为时间索引
print("样本量为{}个".format(len(time_series)))
print(time_series.head())

索引是日期,另外的一列是销量。
[Python] DataFrame的遍历问题_第1张图片
如果用这种方式,输出的只是列名…

for i in time_series:
    print(i)

在这里插入图片描述

二、解决问题

https://blog.csdn.net/sinat_29675423/article/details/87972498
在这里插入图片描述

在网上找了下,发现上面这篇博客提出了三个方法,分别是iteritems()、iterrows()、itertuples(),然后去查了下文档。

1、DataFrame.iteritems()

官方解释:遍历DataFrame列,返回一个带有列名称和内容为Series的元组。可以通过row[index]对元素进行访问。

for column_name, row in time_series.iteritems():
    print(column_name, row[0], row[1], row[2])

因为除了索引我只有一列内容,输出前三行数据,如下
在这里插入图片描述

2、DataFrame.iterrows()

官方解释:按行遍历,将DataFrame行作为(index, Series)对进行迭代。

for index, row in time_series.iterrows():
    print(index, row['value'])

结果如下。
[Python] DataFrame的遍历问题_第2张图片

3、DataFrame.itertuples()

官方解释:按行遍历,将DataFrame的每一行迭代为元组,可以通过row[name]对元素进行访问。

for row in time_series.itertuples():
    # 元组的访问方式
    print(row[0], getattr(row, 'value'))

结果如下。
[Python] DataFrame的遍历问题_第3张图片

DataFrame文档
https://pandas.pydata.org/pandas-docs/stable/reference/frame.html

你可能感兴趣的:(Python学习,python)