我有一个 300x300 df。每行代表不同患者的数据,以 id 命名。前 2 列是患者 ID。列“id_all”包含的参与者比需要的多,而且比“id”多。我的目标是只保留与第一列“id”相对应的患者信息。
第一个 9x9 看起来像这样:
ID | id_all | MMSE BL | MMSE 12 | MMSE 24 | MMSE 36 | MMSE 48 | MMSE 60 | MMSE 72 |
---|---|---|---|---|---|---|---|---|
aaa002 | aaa000 | 22 | 18 | 不适用 | 不适用 | 不适用 | 不适用 | 不适用 |
aaa003 | aaa002 | 29 | 28 | 28 | 29 | 30 | 29 | 不适用 |
aaa005 | aaa003 | 30 | 29 | 30 | 30 | 30 | 不适用 | 不适用 |
aaa024 | aaa005 | 29 | 28 | 25 | 不适用 | 不适用 | 25 | 不适用 |
aaa026 | aaa024 | 30 | 29 | 29 | 29 | 不适用 | 不适用 | 不适用 |
aaa048 | aaa026 | 28 | 30 | 28 | 27 | 30 | 30 | 不适用 |
aaa095 | aaa038 | 29 | 29 | 29 | 26 | 不适用 | 不适用 | 不适用 |
aaa222 | aaa048 | 30 | 29 | 29 | 28 | 28 | 29 | 不适用 |
因此,基于第一列,我想以某种方式遍历第二列,并删除与第一列“id”不匹配的参与者的所有信息。这意味着,在第一行中,删除 2:300 列,并保持第一列不变。
最后,我希望我的 df 看起来像这样:
ID | id_all | MMSE BL | MMSE 12 | MMSE 24 | MMSE 36 | MMSE 48 | MMSE 60 | MMSE 72 |
---|---|---|---|---|---|---|---|---|
aaa002 | aaa002 | 29 | 28 | 28 | 29 | 30 | 29 | 不适用 |
aaa003 | aaa003 | 30 | 29 | 30 | 30 | 30 | 不适用 | 不适用 |
aaa005 | aaa005 | 29 | 28 | 25 | 不适用 | 不适用 | 25 | 不适用 |
aaa024 | aaa024 | 30 | 29 | 29 | 29 | 不适用 | 不适用 | 不适用 |
aaa026 | aaa026 | 28 | 30 | 28 | 27 | 30 | 30 | 不适用 |
aaa048 | aaa048 | 30 | 29 | 29 | 28 | 28 | 29 | 不适用 |
aaa095 | ... | |||||||
aaa222 | ... |
在此示例中,id_all aaa000 和 aaa038 在 id 列中没有匹配项,因此我想删除有关这些参与者的所有信息。我无法弄清楚如何删除几乎所有的行(几乎是因为只剩下前两个单元格),并将所有单元格向上移动。
另一种可能性是,将第一列向下移动直到 id 与 id_all 匹配,然后删除在 id 列中有一个空单元格的整行。
谢谢!