在Pandas中,处理复杂数据帧(具有多层次索引或多级列的数据帧)时,迭代是一个常见的任务
iterrows()
迭代行:import pandas as pd
# 创建一个具有多层次索引的数据帧
index = pd.MultiIndex.from_tuples([('A', 1), ('A', 2), ('B', 1)], names=['letter', 'number'])
df = pd.DataFrame({'value': [10, 20, 30]}, index=index)
# 使用iterrows()迭代行
for index, row in df.iterrows():
print(f"Index: {index}, Value: {row['value']}")
itertuples()
迭代行:for row in df.itertuples():
print(f"Index: {row.Index}, Value: {row.value}")
groupby()
进行分组迭代:# 创建一个具有多级列的数据帧
columns = pd.MultiIndex.from_tuples([('A', 'a'), ('A', 'b'), ('B', 'a')])
df = pd.DataFrame([[1, 2, 3], [4, 5, 6]], columns=columns)
# 使用groupby()按第一级列分组并迭代
for group_name, group_df in df.groupby(level=0, axis=1):
print(f"Group: {group_name}")
print(group_df)
stack()
和unstack()
转换数据帧结构:# 将多级列数据帧转换为长格式
stacked_df = df.stack()
# 迭代堆叠后的数据帧
for index, row in stacked_df.iterrows():
print(f"Index: {index}, Value: {row['value']}")
# 将长格式数据帧转换回多级列数据帧
unstacked_df = stacked_df.unstack()
这些示例展示了如何在Pandas中迭代复杂数据帧。根据您的需求,您可以选择最适合您场景的方法。
领取专属 10元无门槛券
手把手带您无忧上云