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)