Pandas 如何转置数据帧? 我有一个DATAFRAME(GROMPBY PAR“NR”)的结果

Pandas 如何转置数据帧? 我有一个DATAFRAME(GROMPBY PAR“NR”)的结果,pandas,dataframe,transpose,Pandas,Dataframe,Transpose,我需要将此数据帧重新排列为以下格式 nr lap1 time1 lap2 time2 2 1 10 2 100 你知道我该怎么做吗?你可以把这看作是一个挑战。如果您的数据帧有一个额外的列,比如说,colnum: lap nr time colnum 0 1 2 10 1 1 2 2 100 2 然后 将nr列值移动到行索引中,将colnum列值移动到列索引中: lap time

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

nr lap1 time1 lap2 time2
 2    1    10    2    100

你知道我该怎么做吗?

你可以把这看作是一个挑战。如果您的数据帧有一个额外的列,比如说,
colnum

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

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]

因此,, 作为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

添加“colnum”时出现一些问题:SettingWithCopyWarning:试图在数据帧切片的副本上设置一个值。请尝试使用.loc[row_indexer,col_indexer]=value,而不是查看文档中的注意事项:df['colnum']=df.groupby('nr')。cumcount()+1在实际代码中是否使用双重索引,例如
df[…]['colnum']=…
还是确切地说是
df['colnum']=df.groupby('nr').cumcount()+1
?如果您使用的是前者,则是后者导致了警告。如果您使用的是后者,那么。。。我很困惑。我的真实代码,我需要以某种方式将名称从源数据帧复制到结果(最后一行)我的错误
df=df[['lap'、'nr'、'time']]
后跟
df['colnum']=df.groupby('nr')。cumcount()+1
相当于链式索引。解决方法是颠倒这两行的顺序。我已经编辑了上面的帖子来说明我的意思。我必须研究为什么我必须先添加colnum,然后再制作groupby,但它是有效的。谢谢
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