参考书目:《深入浅出Pandas:利用Python进行数据处理与分析》
pandas的数据如果要循环去对每行或每列操作,要迭代操作如下。
先读取案例数据
import numpy as np
import pandas as pd
import datetime
data = 'https://www.gairuo.com/file/data/dataset/team.xlsx'
df = pd.read_excel(data)
Series迭代
for i in df.name:
print(i)
for i,n,q in zip(df.index,df.name,df.Q1):
print(i,n,q)
df.iterrows()
#按行迭代,返回索引和行数据
for index, row in df.iterrows():
print(index, row['name'], row.team, row.Q1)
df.itertuples()
#可以生成一个 namedtuples 类型数据,非常方便使用:
for row in df.itertuples():
print(row)
# Pandas(Index=0, name='Liver', team='E', Q1=89, Q2=21, Q3=24, Q4=64)
for row in df.itertuples(index=False):
print(row)
# Pandas(name='Liver', team='E', Q1=89, Q2=21, Q3=24, Q4=64)
for row in df.itertuples(index=False, name='Gairuo'): # namedtuples
print(row)
# Gairuo(name='Liver', team='E', Q1=89, Q2=21, Q3=24, Q4=64)
# 使用
for row in df.itertuples():
print(row.Index, row.Q1)
df.items()
#df.items()和df.iteritems()功能相同
for label, ser in df.items():
print(label)
print(ser[:2],end='\n')
按列迭代
# 依次取出每个列
for column in df:
print(df[column])
# 可对每个列的内容进行迭代
for column in df:
for i in df[column]:
print(i)
# 当然,可以迭代指定列
for i in df.name:
print(i)
# 一个方法,只迭代想要的列
l = ['name', 'Q1']
cols = df.columns.intersection(l)
for col in cols:
print (col)