Python 3.x 创建包含单级和多级列的框架,并向其中添加数据

Python 3.x 创建包含单级和多级列的框架,并向其中添加数据,python-3.x,pandas,multi-level,Python 3.x,Pandas,Multi Level,我有两个这样的数据帧 frame1=pd.DataFrame(columns=['A','B','C']) a=['d1','d2','d3'] b=['d4','d5'] tups=([('T1',x) for x in a]+ [('T2',x) for x in b]) cols=pd.MultiIndex.from_tuples(tups,names=['Trial','Data']) frame2=pd.DataFrame(columns=cols) 我的目标是将两个数据帧

我有两个这样的数据帧

frame1=pd.DataFrame(columns=['A','B','C'])


a=['d1','d2','d3']
b=['d4','d5']
tups=([('T1',x) for x in a]+
  [('T2',x) for x in b])

cols=pd.MultiIndex.from_tuples(tups,names=['Trial','Data'])
frame2=pd.DataFrame(columns=cols)
我的目标是将两个数据帧放在一个数据帧中,然后添加一些数据行。生成的数据帧如下所示

  Trial    A   B   C        T1         T2
  Data                  d1  d2  d3   d4  d5
0          1   2   3    4   5   6    7   8
1           ...     
...
如果我这样做,那是可以实现的

frame2['A']=1
frame2['B']=2
frame2['C']=3
但这不是一个干净的解决方案,我不能创建框架然后添加数据,因为我至少需要手动插入第一行

我试过了

frame3=frame1.join(frame2)

>>  A1   A2   A3 (T1, d1) (T1, d2) (T1, d3) (T2, d4) (T2, d5)
我认为这不是多栏级别。 我的第二次审判

tup2=([('A1',),('A2',),('A3',)]+[('T1',x) for x in a]+
  [('T2',x) for x in b])
cols2=pd.MultiIndex.from_tuples(tup2,names=['Trial','Data'])
data=[1,2,3,4,5,6,7,8]
frame20=pd.DataFrame(data,index=cols2).T 

 Trial  A1  A2  A3 T1       T2    
 Data   NaN NaN NaN d1 d2 d3 d4 d5      
0        1   2   3  4  5  6  7  8
当尝试查询它
frame20.loc[0,'A1'][0]
时,这个函数工作得很好,但是如果我这样做的话

frame20['Peter']=1234
>Trial  A1  A2  A3 T1       T2      Peter
 Data   NaN NaN NaN d1 d2 d3 d4 d5      
0        1   2   3  4  5  6  7  8   1234
作为专栏“Peter”,我想要什么,而不是我得到的A1。 我的第三次审判

tup3=(['A','B','C']+[('T1',x) for x in a]+
  [('T2',x) for x in b])
cols3=pd.MultiIndex.from_tuples(tup3,names=['Trial','Data'])
frame21=pd.DataFrame(data,index=cols3).T
返回的与第二个完全相同

所以,我要找的是一种方法

pd.DataFrame(rows_of_data,index=alfa).T  #or
pd.DataFrame(rows_of_data,columns=beta)
finalframe=pd.DataFrame(columns=beta)
其中alfa或beta格式正确

另外,作为奖励,我终于想出了一个方法

pd.DataFrame(rows_of_data,index=alfa).T  #or
pd.DataFrame(rows_of_data,columns=beta)
finalframe=pd.DataFrame(columns=beta)
如何使用
concat
append
join
,以便将
data=[1,2,3,4,5,6,7,8]
等随机数据行添加到我的空但完美创建的最终框架中


谢谢,向您致意

您想用空字符串向
frame1
添加一个级别吗

pandas.MultiIndex.from_元组

pandas.concat

我觉得你的答案很有用,但假设你有最后的数据框3。如何从列表中添加新行?使用
append
<代码>frame3.append(pd.Series(mylist,frame3.columns),忽略\u index=True)