如何转置数据帧?

时间:2015-08-17 13:27:31

标签: pandas dataframe transpose

我有一个数据帧(来自groupby par“nr”的结果)

id  lap  nr  time
 1    1   2    10
 4    2   2   100

我需要将此数据框重新排列为以下格式

nr lap1 time1 lap2 time2
 2    1    10    2    100

任何想法我该怎么做?

1 个答案:

答案 0 :(得分:2)

您可以将其视为pivot。如果您的DataFrame有一个额外的列,例如colnum

   lap  nr  time  colnum
0    1   2    10       1
1    2   2   100       2

然后

df.pivot(index='nr', columns='colnum')

nr列值移动到行索引中,将colnum列值移动到列索引中:

       lap    time     
colnum   1  2    1    2
nr                     
2        1  2   10  100

这基本上是理想的结果。我们需要做的就是修复列标签:

df.columns = ['{}{}'.format(col, num) for col,num in df.columns]

因此,     将pandas导入为pd

df = pd.DataFrame({'id': [1, 4], 'lap': [1, 2], 'nr': [2, 2], 'time': [10, 100]})
df['colnum'] = df.groupby('nr').cumcount()+1
df = df[['lap','nr','time','colnum']]
df = df.pivot(index='nr', columns='colnum')
df.columns = ['{}{}'.format(col, num) for col,num in df.columns]
df = df.reset_index()

产量

   nr  lap1  lap2  time1  time2
0   2     1     2     10    100