pandas怎样对数据进行遍历
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pandas怎样对数据进行遍历相关的知识,希望对你有一定的参考价值。
pandas.DataFrame.iterrowsDataFrame.iterrows()
迭代(iterate)覆盖整个DataFrame的行中,返回(index, Series)对。
import numpy as np
import pandas as pd
def _map(data, exp):
for index, row in data.iterrows(): # 获取每行的index、row
for col_name in data.columns:
row[col_name] = exp(row[col_name]) # 把结果返回给data
return data
def _1map(data, exp):
_data = [[exp(row[col_name]) # 把结果转换成2级list
for col_name in data.columns]
for index, row in data.iterrows()
]
return _data
if __name__ == "__main__":
inp = [\'c1\':10, \'c2\':100, \'c1\':11,\'c2\':110, \'c1\':12,\'c2\':120]
df = pd.DataFrame(inp)
temp = _map(df, lambda ele: ele+1 )
print temp
_temp = _1map(df, lambda ele: ele+1)
res_data = pd.DataFrame(_temp) # 对2级list转换成DataFrame
print res_data 参考技术A dataframe()['code'].fillna('code')dataframe()['date'].fillna('date')请看《利用Python进行数据分析》。
Python pandas 按行按列遍历DataFrame
前言
在对DataFrame数据进行处理时,存在需要对数据内容进行遍历的场景。因此记录一下按照行,列遍历的几种方式。
一、按行遍历
1. 使用loc或iloc方法
- loc:表示location,填写内容为行的值或者列表,若填写内容为值,则返回对应行的内容(Series类型);若填写内容为列表,则返回对应行的内容(DataFrame类型)
- iloc:表示integer+location,填写内容为行的索引(int类型)或者列表,返回内容与loc相同。
因此若需要按照行进行遍历时,
- 先可以使用index方法获取索引内容,再使用loc方法
- 先可以使用shape[0]方法获取总行数,再使用iloc方法
2. 使用iterrows()方法
- iterrows():按行遍历,将DataFrame的每一行迭代为(index, Series)对,可以通过row[name]对元素进行访问
因此可以直接使用iterrows()方法,获取得到行内容
代码如下:
data = 'a': 'x': [1, 1], 'y': [2, 1], 'z': [3, 1],
'b': 'x': [1, 2], 'y': [2, 2], 'z': [3, 2],
'c': 'x': [1, 3], 'y': [2, 3], 'z': [3, 3]
data_pd = pd.DataFrame(data)
print(data_pd)
for row in data_pd.index:
print(data_pd.loc[row]['a'])
for row_id in range(data_pd.shape[0]):
print(data_pd.iloc[row_id]['a'])
for index, row in data_pd.iterrows():
print(row['a'])
运行结果,三种方法结果相同:
a b c
x [1, 1] [1, 2] [1, 3]
y [2, 1] [2, 2] [2, 3]
z [3, 1] [3, 2] [3, 3]
[1, 1]
[2, 1]
[3, 1]
二、按列遍历
1. 使用列索引方式
DataFrame可以直接使用[列名称]的方式获取列的值,即data_pd['a']
即可得到列内容。
因此若需要按照列进行遍历时,
- 先可以使用colums方法获取列内容,再使用[列名称]方式
2. 使用iteritems()方法
- iteritems():按列遍历,将DataFrame的每一列迭代为(列名, Series)对,可以通过row[index]对元素进行访问
因此可以直接使用iteritems()方法,获取得到列内容
代码如下:
data = 'a': 'x': [1, 1], 'y': [2, 1], 'z': [3, 1],
'b': 'x': [1, 2], 'y': [2, 2], 'z': [3, 2],
'c': 'x': [1, 3], 'y': [2, 3], 'z': [3, 3]
data_pd = pd.DataFrame(data)
print(data_pd)
for col in data_pd.columns:
print(data_pd[col].iloc[0])
for index, col in data_pd.iteritems():
print(col.iloc[0])
运行结果,两种方法结果相同:
a b c
x [1, 1] [1, 2] [1, 3]
y [2, 1] [2, 2] [2, 3]
z [3, 1] [3, 2] [3, 3]
[1, 1]
[1, 2]
[1, 3]
以上是关于pandas怎样对数据进行遍历的主要内容,如果未能解决你的问题,请参考以下文章