我试图拿出一个数据帧做一些数据分析和真的会从具有数据帧,可以在一个数据帧处理常规的索引和MultiIndexing一起受益。结合多指标和指数的大熊猫数据帧
对于每位患者,我有各种类型的数据(T1avg,T2avg,等...)的6片。让我们称此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
但是当我尝试使用附加命令,
com = df.append(df2)
我得到不需要的东西,多指标的,我在DF成立,现在走了,带着类型元组的简单指数(“NecS3Hs05,片0”等)所取代。来自df2的指数保持不变'NecS3Hs05'。
这是可以做到与熊猫,还是我在这里找错了树?此外,这甚至是推荐的将数据框中的患者属性存储起来的方法(即这是否为未解决的问题)?我认为我真正想要的是将所有内容都保存在一个简单的索引中,而是将N-d数组存储在数据框的元素中。
举例来说,如果我尝试类似:
com['NecS3Hs05','T1avg']
我想要得到的形状/数组/元组len个6
,当我试图让肿瘤类型:
com['NecS3Hs05','Tumour Type']
我得到的字符串“皮下”。很明显,我也想保留数据帧的酷炫功能,看起来PANDAS是正确的方式,我只需要更多地了解如何设置我的数据帧
我希望这是一个明智的问题,如果不是的话,我很乐意重新组建它。
附: (['NecS3Hs05'] * 6)填写条目并设置MultiIndex这种方式感觉'错误',没有人有更好的方法吗? – Firas
我只是使用一个常规的DataFrame与肿瘤等信息复制多行。 – BrenBarn
@BrenBarn我相信这就是OP在df-desired中所指示的 – DrSAR