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]]]
答案 0 :(得分:2)
您可以使用groupby
axis =1
和pd.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