參考書目:《深入淺出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)
for i in df.name:
print(i)
for i,n,q in zip(df.index,df.name,df.Q1):
print(i,n,q)
#按行迭代,返回索引和行數據
for index, row in df.iterrows():
print(index, row['name'], row.team, row.Q1)
#可以生成一個 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.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)