PythonPandasMultiIndexing:复制行并在新列中添加区分信息

我是一名 python 初学者,试图复制现有行,同时在新列中添加区分信息。目前,我的 DataFrame 看起来像这样:

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

我想添加一个新列Test,它 for V1requires Test 1,但 for V2andV3需要Test 1Test 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

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

回答

您可以手动创建您的访问测试样本数据框,然后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


以上是PythonPandasMultiIndexing:复制行并在新列中添加区分信息的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>