我有一个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
答案 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