我正在尝试提出一个 DataFrame 来进行一些数据分析,并且真正受益于拥有一个可以在一个数据框中同时处理常规索引和 MultiIndexing 的数据框。
对于每个患者,我有 6 个不同类型的数据切片(T1avg、T2avg 等)。让我们称之为 dataframe1(来自 ipython 笔记本):
import pandas
dat0 = numpy.zeros([6])
dat1 = numpy.zeros([6])
pat0=(['NecS3Hs05']*6)
pat1=(['NecS3Hs06']*6)
slc = (['Slice ' + str(x) for x in xrange(dat0.shape[-1])])
ind = zip(*[pat0+pat1,slc+slc])
named_ind = pandas.MultiIndex.from_tuples(ind, names = ['Patients','Slices'])
ser = pandas.Series(numpy.append(dat0,dat1),index = named_ind)
df = pandas.DataFrame(data=ser, columns=['T1avg'])
输出图像:df1
对于每位患者,我还拥有各种信息串(肿瘤类型、成像次数、治疗类型):
pats = ['NecS3Hs05','NecS3Hs05']
tx = ['Control','Treated']
Ttype = ['subcutaneous','orthotopic']
NSessions = ['2','3']
cols = ['Tx Group', 'Tumour Type', 'Imaging Sessions']
dat = numpy.array([tx,Ttype,NSessions]).T
df2 = pandas.DataFrame(dat, index=pats,columns=cols)
[我也想在这里张贴一张照片,但我需要至少10个声望才能这样做]
理想情况下,我想要一个如下所示的数据框(抱歉,在图像编辑器中草绘出来)
所需输出的图像:df-desired
但是当我尝试使用 append 命令时,
com = df.append(df2)
我得到了一些不希望的东西,我在 df 中设置的 MultiIndex 现在消失了,取而代之的是一个简单的元组索引('NecS3Hs05,Slice 0' 等......)。df2 的索引保持不变“NecS3Hs05”。
这可能与熊猫有关,还是我在这里吠叫错误的树?此外,这甚至是在数据框中存储患者属性的推荐方式(即这是 unpandas)吗?我认为我真正想要的是将所有内容都保留为简单的索引,而是将 Nd 数组存储在数据框的元素中。
例如,如果我尝试类似:
com['NecS3Hs05','T1avg']
我想得到一个形状/长度为 6 的数组/元组
当我尝试获取肿瘤类型时:
com['NecS3Hs05','Tumour Type']
我得到字符串“皮下”。显然我也想保留数据框的酷特性,看起来 PANDAS 是正确的方法,我只需要更多地了解如何设置我的数据框
我希望这是一个明智的问题,如果不是,我很乐意重新形成它。