如何将多行不同大小的行折叠成大熊猫?

时间:2020-07-28 05:43:01

标签: python pandas

我有一个Pandas DataFrame,具有: '''

1st column = subject_id,
2nd column = voxel_type (categorical; T, P, or C),
3rd to 10th columns = floats

''' 由于每个主题都有多行,因此我想将它们全部折叠成一行,每个主题只保留一行。 我的第一个想法是使用groupby,正如SO上的其他问题所建议的那样。但是,每个科目的行​​数不同...该如何处理?

非常感谢您!

1 个答案:

答案 0 :(得分:0)

老天,

很难看到您想要的东西,但这是朝着这个方向发展的东西。您最可能要查找的是数据透视表数据透视表。这是我以最佳猜测做过一个示例:

import pandas as pd
import numpy as np

让我们生成一些虚拟数据:

begin = pd.DataFrame({'id': [1,1,1,1,2,2,3,3,3], 
                      'tp': ['t','p','c']*3, 
                     'foo': [np.random.random()+1 for x  in range(9) ], 
                     'bar': [np.random.random()+2 for x  in range(9) ]  
                    })

假设:tp不一致,单个id可能有多个tp条目。然后,我们只需旋转表并列出我们想要的列即可:

pd.pivot_table(begin, values=['foo', 'bar'], columns=['id', 'tp'])

如果假设先验是错误的,则可以执行以下操作:

pd.pivot_table(begin, values=['tp,'foo', 'bar'], columns='id')

有关更多信息,请参见documentation on Pivot