我正在尝试制作一个pandas数据帧来保存我的实验数据。数据如下所述:
我有~300个人参加了由~200个试验组成的实验,其中每个试验都有许多实验控制的参数(~10个参数)。对于每个试验和每个人,我都有一些测量的时间序列,即30个时间点。
将此数据构建到数据框架的最佳方法是什么?我需要能够做一些事情,例如在所有具有特定参数的试验中,在某个时间获得每个人的实验值,或者获得特定时间的平均值和单个试验的等等。基本上我需要是能够以最可想到的方式切割这些数据。
谢谢!
编辑:如果您想查看我目前的数据,请向下滚动到此笔记本中的最后3个单元格:https://drive.google.com/file/d/1UZG_S2fg4MzaED8cLwE-nKHG0SHqevUr/view?usp=sharing
数据变量包含每个试验的所有参数,interp_traces变量是每个时间点,个体和试验的时间序列测量数组。
如果可能的话,我想把所有东西放在一件事上。多指数看起来很有希望。
答案 0 :(得分:0)
我认为需要MultiIndex
。
<强>示例强>:
individuals = list('ABCD')
trials = list('ab')
par = list('xyz')
dates = pd.date_range('2018-01-01', periods=5)
n = ['ind','trials','pars']
mux = pd.MultiIndex.from_product([individuals, trials, par], names=n)
df = pd.DataFrame(index=mux, columns=dates)
print (df)
2018-01-01 2018-01-02 2018-01-03 2018-01-04 2018-01-05
ind trials pars
A a x NaN NaN NaN NaN NaN
y NaN NaN NaN NaN NaN
z NaN NaN NaN NaN NaN
b x NaN NaN NaN NaN NaN
y NaN NaN NaN NaN NaN
z NaN NaN NaN NaN NaN
B a x NaN NaN NaN NaN NaN
y NaN NaN NaN NaN NaN
z NaN NaN NaN NaN NaN
b x NaN NaN NaN NaN NaN
y NaN NaN NaN NaN NaN
z NaN NaN NaN NaN NaN
C a x NaN NaN NaN NaN NaN
y NaN NaN NaN NaN NaN
z NaN NaN NaN NaN NaN
b x NaN NaN NaN NaN NaN
y NaN NaN NaN NaN NaN
z NaN NaN NaN NaN NaN
D a x NaN NaN NaN NaN NaN
y NaN NaN NaN NaN NaN
z NaN NaN NaN NaN NaN
b x NaN NaN NaN NaN NaN
y NaN NaN NaN NaN NaN
z NaN NaN NaN NaN NaN