PythonPandasMultiIndexing:复制行并在新列中添加区分信息
我是一名 python 初学者,试图复制现有行,同时在新列中添加区分信息。目前,我的 DataFrame 看起来像这样:
Patient Visit
1 V1
1 V2
1 V3
2 V1
2 V2
我想添加一个新列Test,它 for V1requires Test 1,但 for V2andV3需要Test 1和Test 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,为每个测试添加一个A和B示例:
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
在附加列中添加新信息时如何复制行?感谢您的帮助!!
回答
您可以手动创建您的访问测试样本数据框,然后merge使用患者数据框:
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
THE END
二维码