如何转置数据帧?
how to transpose dataframe?
我有一个数据框(来自 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
知道我该怎么做吗?
您可以将其视为 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
我有一个数据框(来自 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
知道我该怎么做吗?
您可以将其视为 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