将熊猫数据帧的多个数据帧行聚合为一行

时间:2020-03-30 08:36:39

标签: python pandas dataframe

我得到了一个由多行组成的熊猫数据框,其中每一行都是临床患者某些医学价值的测试结果。但是,我想将包含12个测量结果的每位患者的所有行汇总为一行。

最初,数据框由37列组成,其中每个患者都由唯一的[pid]列标识,在[age]列中还有患者的年龄。除了新数据框的第一行外,这两列都可以删除。

另外35列包含患者生命值的测试结果,每位患者总共有12个测量值。

我的方法如下:

train_features = pd.read_csv('train_features.csv')
train_features.sort_values(by=['pid','Time'], inplace=True)
measurements = []
for i in range(12):
    measurements.append(train_features.groupby(['pid'], as_index=False).nth(i))
    if( i > 0 ):
        measurements[i].drop(['pid', 'Age'], axis=1, inplace=True)
        columns = []
        for j in measurements[i].columns:
            columns.append('{}_{}'.format(j,i))
        measurements[i].columns = columns

aggregated_features = pd.concat(measurements[0:1], axis=1)

首先,我按pid和time列对数据帧进行排序。然后,我将仅包含已排序数据帧的第n行的每个数据帧保存到测量列表,这是每个患者的第n个测量值。 然后,我对列进行重命名,以使除了第一个测量结果外,所有生命值都带有一个带有下标测量值的下标。除了第一个测量值,我还为每个测量值删除了['pid']和['age']列。 当我最终将12个数据帧再次合并为一个时,我注意到出了点问题,因为现在索引之后的第一列['pid']列包含许多NaN字段,但是在原始数据帧中,['pid']列却没有没有任何NaN字段。

我在实现过程中想念什么?有更好的方法吗?

0 个答案:

没有答案
相关问题