重组数据框列表

时间:2017-11-29 09:01:35

标签: python list pandas dataframe

我有一个n数据框

的列表
mylist = [None]*3
mylist[0] = pd.DataFrame(data=[[1,2,3,4,5],[6,7,8,9,10]],columns=['a','b','c','d','e'])
mylist[1] = pd.DataFrame(data=[[11,12,13,14,15],[16,17,18,19,20]],columns=['a','b','c','d','e'])
mylist[2] = pd.DataFrame(data=[[21,22,23,24,25],[26,27,28,29,30]],columns=['a','b','c','d','e'])

每个数据框包含x列和y

我想转换mylist中的mylist_transf 具有与mylist列一样多的数据帧。 mylist_transf的第一个数据帧应包含mylist中数据帧的第一列,第二个数据帧,第二列等等。

所需的输出如下......

mylist_transf = [None]*5
mylist_transf[0] = pd.DataFrame(data=[[1,6],[11,16],[21,26]],columns=['0','1'])
mylist_transf[1] = pd.DataFrame(data=[[2,7],[12,17],[22,27]],columns=['0','1'])
mylist_transf[2] = pd.DataFrame(data=[[3,8],[13,18],[23,28]],columns=['0','1'])
mylist_transf[3] = pd.DataFrame(data=[[4,9],[14,19],[24,29]],columns=['0','1'])
mylist_transf[4] = pd.DataFrame(data=[[5,10],[15,20],[25,30]],columns=['0','1'])

我希望以pythonic方式执行此操作(我在mylist中有许多数据帧) 如果可能,我还要将名称'a','b','c','d','e'分配给mylist_transf

的新5个列表条目

1 个答案:

答案 0 :(得分:0)

Concat,对列进行分组,然后拆分并重置reset_index,即

new_list = [i.T.reset_index(drop=True) for _,i in pd.concat(mylist,1).groupby(axis=1,level=0)]

输出:

new_list[0]
#    0   1
#0   1   6
#1  11  16
#2  21  26
new_list[1]
#    0   1 
#0   2   7
#1  12  17
#2  22  27
new_list[4]
#    0   1
#0   5  10
#1  15  20
#2  25  30