首页 > 解决方案 > 如何编写用于迭代 DataFrame 的 for 循环并将其子集化以仅包含在每次迭代中检索到的那些列?

问题描述

类似于 excel 过滤器选项

目的是在样本 1 为 0 时获得一个子集 DataFrame,例如在每次迭代后具有三列 'id'、'reference'、'sample 1'(对每个样本执行此操作)'id'、'reference'、'sample 1' 当样本 1 为 1 时(对每个样本执行此操作)示例当样本 1 = 0 时,生成的子集 DataFrame 将是 在此处输入图像描述

标签: pythonpandasloopsconditional-statementssubset

解决方案


尝试:

sample_cols = df.columns[2:]
dfs = []
for col in sample_cols:
    print('='*50, col, '='*50)
    for condition in [0, 1]:
        print('='*20, condition, '='*20)
        df_subset = df[df[col]==condition].reset_index(drop=True)
        df_subset = df_subset[['id', 'Reference', col]]
        print(df_subset)
        #df_subset.to_csv(f'./{col}_{condition}.csv', index=False)
        dfs.append(df_subset)

df_final = pd.concat(dfs, ignore_index=True)
df_final.to_csv('./file_name.csv', index=False)

推荐阅读