首页 > 解决方案 > 如何使用循环创建多个 DataFrame 子集

问题描述

基础数据框

df = pd.DataFrame(np.random.randint(0,10,size=(100,6)),columns = 
['red','blue','yellow','green','purple','total'])

如何使用循环对此进行编码?

df_x = df[df.columns[[y,5]]]

我想将此逻辑应用于具有更多列的数据框,但为简单起见,将问题归结为这一点。

下面是所需的输出,创建了 5 个新数据框(假设我不必输入所有 5 行)

df_red = df[df.columns[[0,5]]]
df_blue = df[df.columns[[1,5]]]
df_yellow = df[df.columns[[2,5]]]
df_green = df[df.columns[[3,5]]]
df_purple = df[df.columns[[4,5]]]

标签: pythonpandas

解决方案


你可以做groupby axis =1pd.concat

variables = locals()
for x , y  in df.iloc[:,:-1].groupby(level=0,axis=1):
    variables["df_{0}".format(x)] =pd.concat([y,df.iloc[:,[-1]]],axis=1)


df_red.head()

Out[566]: 
   red  total
0    4      7
1    7      9
2    6      7
3    4      2
4    5      8

推荐阅读