我是一个python初学者,试图复制现有的行,同时在新列中添加区分信息。目前,我的DataFrame是这样的:
Patient Visit
1 V1
1 V2
1 V3
2 V1
2 V2我想添加一个新列Test,对于V1,它需要Test 1,但是对于V2和V3,它同时需要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如何在其他列中添加新信息的同时复制行?谢谢你的帮助!!
发布于 2021-01-10 04:25:15
尝试使用explode一步一步地呈现以下内容:
创建DF:
t = pd.DataFrame({'Patient': [1,1,1,2,2],
'Visit': ['V1', 'V2', 'V3', 'V1', 'V2']})
Patient Visit
0 1 V1
1 1 V2
2 1 V3
3 2 V1
4 2 V2添加测试列:
t['Test'] = t['Visit'].apply(lambda x: ['Test 1'] if x == 'V1' else ['Test 1', 'Test 2'])
Patient Visit Test
0 1 V1 [Test 1]
1 1 V2 [Test 1, Test 2]
2 1 V3 [Test 1, Test 2]
3 2 V1 [Test 1]
4 2 V2 [Test 1, Test 2]使用explode将每个测试作为其自己的行:
t = t.explode('Test') # Since this cannot be done inline you need to copy this to the original DF.
Patient Visit Test
0 1 V1 Test 1
1 1 V2 Test 1
1 1 V2 Test 2
2 1 V3 Test 1
2 1 V3 Test 2
3 2 V1 Test 1
4 2 V2 Test 1
4 2 V2 Test 2对“Sample”列执行相同的操作:添加“Sample”列:
t['Sample'] = t['Test'].apply(lambda x: ['A', 'B'])Explode‘示例列:
t = t.explode('Sample')以下是最终输出:
Patient Visit Test Sample
0 1 V1 Test 1 A
0 1 V1 Test 1 B
1 1 V2 Test 1 A
1 1 V2 Test 1 B
1 1 V2 Test 2 A
1 1 V2 Test 2 B
2 1 V3 Test 1 A
2 1 V3 Test 1 B
2 1 V3 Test 2 A
2 1 V3 Test 2 B
3 2 V1 Test 1 A
3 2 V1 Test 1 B
4 2 V2 Test 1 A
4 2 V2 Test 1 B
4 2 V2 Test 2 A
4 2 V2 Test 2 Bhttps://stackoverflow.com/questions/65644664
复制相似问题