我有一个需要重塑的数据帧(示例如下)。我希望每行只有一个唯一的用户,但是现在,每个用户在数据框中有两行,根据“testday”列(baseline和D7)具有不同的值。我希望基于testday组的列名来重命名值列(‘01.tristeza Aparente)。因此,新的值列将类似于'Basel_Tristeza Aparente’和'D7_01.
我已经准备好的关于Pivot和unstack的教程并不能很好地工作,因为我并没有尝试聚合数据。我只是在将用户折叠成一行时需要不同的列。谢谢,如果我能把这个问题说得更清楚,请告诉我
{'01. Tristeza Aparente': {0: 4.0,
1: 4.0,
2: 4.0,
3: 2.0,
4: 1.0,
5: 0.0,
6: 3.0},
'02. Tristeza Expressa': {0: 6.0,
1: 6.0,
2: 4.0,
3: 0.0,
4: 4.0,
5: 3.0,
6: 6.0},
'group': {0: 'placebo',
1: 'placebo',
2: 'placebo',
3: 'placebo',
4: 'placebo',
5: 'placebo',
6: 'placebo'},
'subject': {0: 1.0, 1: nan, 2: 2.0, 3: nan, 4: 3.0, 5: nan, 6: 4.0},
'subjectedit': {0: 1.0, 1: 1.0, 2: 2.0, 3: 2.0, 4: 3.0, 5: 3.0, 6: 4.0},
'testday': {0: 'Basal',
1: 'D7',
2: 'Basal',
3: 'D7',
4: 'Basal',
5: 'D7',
6: 'Basal'}}发布于 2020-11-02 03:43:11
您可以使用f对数据帧进行pivot并使用格式化字符串重命名列,但请确保您使用的是最新版本的pandas,因为pivot在早期版本中存在错误。
df = df.pivot(index=['group', 'subjectedit'], columns='testday')
df.columns = [f'{col[1]}_{col[0]}' for col in df.columns]
df
Out[1]:
Basal_01. Tristeza Aparente D7_01. Tristeza Aparente \
group subjectedit
placebo 1.0 4.0 4.0
2.0 4.0 2.0
3.0 1.0 0.0
4.0 3.0 NaN
Basal_02. Tristeza Expressa D7_02. Tristeza Expressa \
group subjectedit
placebo 1.0 6.0 6.0
2.0 4.0 0.0
3.0 4.0 3.0
4.0 6.0 NaN
Basal_subject D7_subject
group subjectedit
placebo 1.0 1.0 NaN
2.0 2.0 NaN
3.0 3.0 NaN
4.0 4.0 NaN https://stackoverflow.com/questions/64635755
复制相似问题