【pandas】[8] pandas逐行(iterrows())或逐列(iteritems())处理

1、构建dataframe

df = pd.DataFrame([('E146', 100.92, '[-inf ~ -999998.0]'),('E138', 107.92, '[-999998.0 ~ 2]'),('E095', 116.92, '[1.5 ~ 3.5]')],columns = ['name', 'score', 'value'])
Out[11]: 
   name   score               value
0  E146  100.92  [-inf ~ -999998.0]
1  E138  107.92     [-999998.0 ~ 2]
2  E095  116.92         [1.5 ~ 3.5]

 

2、逐行操作,其实就是调用DataFrame的iterrows()函数

for row_index, row in df.iterrows():
    print('行号:', row_index)
    print('第{} 行的值: '.format(row_index))
    print(row)
    print('第{} 行 value 列的值: '.format(row_index), row['value'])

结果:

行号: 0
第0 行的值: 
name                   E146
score                100.92
value    [-inf ~ -999998.0]
Name: 0, dtype: object
第0 行 value 列的值:  [-inf ~ -999998.0]
行号: 1
第1 行的值: 
name                E138
score             107.92
value    [-999998.0 ~ 2]
Name: 1, dtype: object
第1 行 value 列的值:  [-999998.0 ~ 2]
行号: 2
第2 行的值: 
name            E095
score         116.92
value    [1.5 ~ 3.5]
Name: 2, dtype: object
第2 行 value 列的值:  [1.5 ~ 3.5]

 

3、逐列操作,其实就是调用DataFrame的iteritems()函数

for col_index, col_value in df.iteritems():
    print('列名:', col_index)
    print('{} 列的值:'.format(col_index))
    print(col_value)

结果:

列名: name
name 列的值:
0    E146
1    E138
2    E095
Name: name, dtype: object
列名: score
score 列的值:
0    100.92
1    107.92
2    116.92
Name: score, dtype: float64
列名: value
value 列的值:
0    [-inf ~ -999998.0]
1       [-999998.0 ~ 2]
2           [1.5 ~ 3.5]
Name: value, dtype: object

 

总结:

df.iterrows() 是取出df的每一行

df.iteritems() 是取出df的每一列

ps:如果df比较大。建议不要使用如上方式。考虑使用df的map()、apply()、applymap()等方法

 

你可能感兴趣的:(python,python数据分析,python)