【问题标题】:How do I make each group within a dataframe the same size?如何使数据框中的每个组的大小相同?
【发布时间】:2021-08-16 13:49:29
【问题描述】:

我有以下数据框:

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 有三个观察结果,患者 2 有一个观察结果,患者 3 有两个观察结果。我正在尝试找到一种方法来填充每个患者组,以使它们的大小(相同数量的观察值)与我尝试将此数据用于 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

【问题讨论】:

  • 有小时栏吗?
  • 用什么垫子?你能包括你的预期输出吗?
  • 数据框@Umar.H 中没有小时列
  • @not_speshal 我已经编辑了问题,抱歉

标签: python pandas dataframe lstm


【解决方案1】:

将您的原始数据重新索引到患者和累积计数上的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

【讨论】:

    猜你喜欢
    • 2019-12-26
    • 1970-01-01
    • 2019-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-06
    相关资源
    最近更新 更多