如何使数据框中的每个组大小相同?

How do I make each group within a dataframe the same size?

我有以下数据框:

Patient HR 02 PaO2 Hgb
1 62 94 73 31
1 64 93 73 34
1 62 92 73 31
2 64 90 84 42
3 62 95 75 30
3 70 97 77 29

患者的每一行表示每小时观察一次。因此,患者 1 有 3 个观察结果,患者 2 有 1 个观察结果,患者 3 有 2 个观察结果。我正在尝试找到一种方法来填充每个患者组,以便它们与我尝试将此数据用于 LSTM 时具有相同的大小(相同的观察次数)。我不确定最好的方法是什么。我想知道是否有人有任何想法?

输出应该是这样的:

Patient HR 02 PaO2 Hgb
1 62 94 73 31
1 64 93 73 34
1 62 92 73 31
2 64 90 84 42
2 0 0 0 0
2 0 0 0 0
3 62 95 75 30
3 70 97 77 29
3 0 0 0 0

将您的原始数据重新索引为 pandas.MultiIndex 患者和累积计数:

df = df.set_index(["Patient", df.groupby("Patient").cumcount()])
index = pd.MultiIndex.from_product(df.index.levels, names=df.index.names)
output = df.reindex(index, fill_value=0).reset_index(level=1, drop=True).reset_index()

>>> output
   Patient  HR  02  PaO2  Hgb
0        1  62  94    73   31
1        1  64  93    73   34
2        1  62  92    73   31
3        2  64  90    84   42
4        2   0   0     0    0
5        2   0   0     0    0
6        3  62  95    75   30
7        3  70  97    77   29
8        3   0   0     0    0