如何使用循环从pandas DataFrame中选取指定多列
问题根源
你写的代码每次循环都会重新给df1赋值,直接覆盖了上一轮循环生成的结果,所以最终只能保留最后一次循环(i=3)对应的3列,自然丢失了Amount i=2列。
解决方案
两种实现方式都可以满足必须用循环的要求:
方式1:先构造列名列表再一次性取列(推荐,性能更高)
先把固定要保留的列放进列表,再通过循环把动态生成的列名追加到列表里,最后一次性筛选所有列:
# 初始化固定保留的列 selected_cols = ['Time', 'Amount'] # 循环追加动态列名,range(2,4)正好匹配i=2、i=3 for i in range(2, 4): selected_cols.append('Amount i={}'.format(i)) # 一次性生成目标DataFrame df1 = df[selected_cols]
方式2:循环逐列添加
先初始化包含固定列的DataFrame,每次循环把对应的列追加进去:
# 先取固定列,加copy避免链式索引警告 df1 = df[['Time', 'Amount']].copy() for i in range(2, 4): df1['Amount i={}'.format(i)] = df['Amount i={}'.format(i)]
内容的提问来源于stack exchange,提问作者Jack
相关产品推荐
相关产品推荐

