Python开发之DataFrame数据的多种遍历方法
- 1 遍历DataFrame的三种方法
- 2 按列遍历
- 3 按行遍历
-
- 4 遍历DataFrame某一列(行)数据
-
- 5 获取某一个值
-
- 5.1 DataFrame.at[行索引,列索引]获取某一个值
- 5.2 DataFrame.iat[默认行索引,默认列索引]获取某一个值
- 5.3 DataFrame.loc[行索引,列索引]获取某个值,与at不同的是,只输入某一参数,获得某一行或某一列
- 5.4 DataFrame.iloc[默认行索引,默认列索引]获取某个值,与iat不同的是,只输入某一参数,获得某一行或某一列:
前言:本博客转载自《DataFrame数据的多种遍历方法》
之前本人博客链接
《Python开发之Pandas的简单使用(一)》
《Python开发之Pandas的简单使用(二)》
《Python开发之处理常见的txt、excel、csv文档》
1 遍历DataFrame的三种方法
- iteritem()方法返回一个<class ‘method’>数据,可利用for循环获得输出
- iterrow()方法返回一个<class ‘generator’>数据,可利用for循环获得输出
- itertuple()方法返回一个<class ‘pandas.core.frame.Pandas’>数据,可利用getattr(row,‘列索引’)方法获得对应数据
演示数据准备:
data = {'state':['Ohio','Ohio','Ohio','Nevada','Nevada','Nevada'],
'year':[2000,2001,2002,2003,2004,2005],
'pop':[1.5,1.7,3.6,2.4,2.9,3.2]}
frame = pd.DataFrame(data)
2 按列遍历
column_indexs = []
for column_index, row_data in frame.iteritems():
column_indexs.append(column_index)
print(row_data)
print(column_indexs)
运行结果:
![在这里插入图片描述](https://img-blog.csdnimg.cn/cbd562a208174765900ff048537f797f.png)
3 按行遍历
3.1 第一种方法
row_indexs = []
for index, row in frame.iterrows():
row_indexs.append(index)
print(row)
print(row_indexs)
运行结果:
![在这里插入图片描述](https://img-blog.csdnimg.cn/550f3dac1fff410e801f1ab20fb624b1.png)
还可以通过列名获取对应数据
for index, row in frame.iterrows():
print(row['pop'])
运行结果:
![在这里插入图片描述](https://img-blog.csdnimg.cn/b069897694a749f59d4ffa8ed13930fb.png)
3.2 第二种方法
for row in frame.itertuples():
print(getattr(row, 'state'), getattr(row, 'year'), getattr(row, 'pop'))
print(type(row))
运行结果:
![在这里插入图片描述](https://img-blog.csdnimg.cn/31c7196dabb24aed909d1307135eecbe.png)
4 遍历DataFrame某一列(行)数据
演示数据准备
data = {'state':['Ohio','Ohio','Ohio','Nevada','Nevada','Nevada'],
'year':[2000,2001,2002,2003,2004,2005],
'pop':[1.5,1.7,3.6,2.4,2.9,3.2]}
frame = pd.DataFrame(data)
4.1 获取frame的index属性,然后使用frame[列索引].get(行索引)获得对应的值
print(frame.columns)
for index in frame.index:
print(frame['state'].get(index))
运行结果:
![在这里插入图片描述](https://img-blog.csdnimg.cn/7884f51f2b0a4e6ab0dcfcda9c1d8ff7.png)
与上面等价的两种写法
# 第一种
for index in frame.index:
print(frame['state'][index])
# 第二种
for index in frame.index:
print(frame.get('state').get(index))
4.2 获取frame的column属性,然后使用frame[列索引].get(行索引)获得对应的值
print(frame.index)
for column in frame.columns:
print(frame[column].get(0))
运行结果:
![在这里插入图片描述](https://img-blog.csdnimg.cn/9001d237f5f3412da081f982fa318d05.png)
5 获取某一个值
5.1 DataFrame.at[行索引,列索引]获取某一个值
![在这里插入图片描述](https://img-blog.csdnimg.cn/d9954aa08c5f4db48fc65f676c97b01f.png)
5.2 DataFrame.iat[默认行索引,默认列索引]获取某一个值
![在这里插入图片描述](https://img-blog.csdnimg.cn/c16e80cb7e01491a8aa41701f42652ff.png)
5.3 DataFrame.loc[行索引,列索引]获取某个值,与at不同的是,只输入某一参数,获得某一行或某一列
![在这里插入图片描述](https://img-blog.csdnimg.cn/ce33264c8b424c9d9bfca4d1e3317bee.png)
5.4 DataFrame.iloc[默认行索引,默认列索引]获取某个值,与iat不同的是,只输入某一参数,获得某一行或某一列:
![在这里插入图片描述](https://img-blog.csdnimg.cn/f77371d73d5e4781b8dafdde4240c206.png)