gpt4 book ai didi

Python Pandas 多重索引 : Duplicate rows and add differentiating information in new column

转载 作者:行者123 更新时间:2023-12-02 02:25:54 26 4
gpt4 key购买 nike

我是一个Python初学者,试图复制现有行,同时在新列中添加区分信息。目前,我的 DataFrame 如下所示:

Patient  Visit
1 V1
1 V2
1 V3
2 V1
2 V2

我想添加一个新列 Test,对于 V1 需要 Test 1,但对于 V2 > 和 V3 需要 测试 1测试 2:

Patient  Visit    Test
1 V1 Test 1
1 V2 Test 1
1 V2 Test 2
1 V3 Test 1
1 V3 Test 2
2 V1 Test 1
2 V2 Test 1
2 V2 Test 2

然后我还想添加一列 Sample ,为每个测试添加 AB 示例:

Patient  Visit    Test  Sample
1 V1 Test 1 A
1 V1 Test 1 B
1 V2 Test 1 A
1 V2 Test 1 B
1 V2 Test 2 A
1 V2 Test 2 B
...
2 V2 Test 2 A
2 V2 Test 2 B

如何在附加列中添加新信息时复制行?谢谢您的帮助!!

最佳答案

您可以手动创建 Visits-Test-Sample 数据框,然后与患者数据框合并:

pd.MultiIndex.from_product([['V2','V3'],['Test 1', 'Test 2'],['A', 'B']], names=['Visit', 'Test', 'Sample'])\
.union(pd.MultiIndex.from_product([['V1'],['Test 1'],['A','B']], names=['Visit', 'Test', 'Sample']))\
.to_frame().reset_index(drop=True)\
.merge(df, on='Visit')\
.sort_values('Patient')

输出:

   Visit    Test Sample  Patient
0 V1 Test 1 A 1
2 V1 Test 1 B 1
4 V2 Test 1 A 1
6 V2 Test 1 B 1
8 V2 Test 2 A 1
10 V2 Test 2 B 1
12 V3 Test 1 A 1
13 V3 Test 1 B 1
14 V3 Test 2 A 1
15 V3 Test 2 B 1
1 V1 Test 1 A 2
3 V1 Test 1 B 2
5 V2 Test 1 A 2
7 V2 Test 1 B 2
9 V2 Test 2 A 2
11 V2 Test 2 B 2

关于Python Pandas 多重索引 : Duplicate rows and add differentiating information in new column,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65644664/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com