Python 重新构造数据帧

Python 重新构造数据帧,python,pandas,dataframe,Python,Pandas,Dataframe,我有以下数据帧: 播放 位置 框架 x Y 1. A_1 1. 0.1 0.1 1. A_2 1. 0.1 0.1 1. B_1 1. 0.1 0.1 1. A_1 2. 0.1 0.1 1. A_2 2. 0.1 0.1 1. B_1 2. 0.1 0.1 2. A_1 1. 0.1 0.1 2. B_1 1. 0.1 0.1 2. B_2 1. 0.1 0.1 2. A_1 2. 0.1 0.1 2. B_1 2. 0.1 0.1 2. B_2 2. 0.1 0.1 sort_values

我有以下数据帧:

播放 位置 框架 x Y 1. A_1 1. 0.1 0.1 1. A_2 1. 0.1 0.1 1. B_1 1. 0.1 0.1 1. A_1 2. 0.1 0.1 1. A_2 2. 0.1 0.1 1. B_1 2. 0.1 0.1 2. A_1 1. 0.1 0.1 2. B_1 1. 0.1 0.1 2. B_2 1. 0.1 0.1 2. A_1 2. 0.1 0.1 2. B_1 2. 0.1 0.1 2. B_2 2. 0.1 0.1
  • sort_values()
    这样索引就按您想要的顺序排列了
  • 设置索引()
    现有列
  • sick()
    coords
  • 说出一切
  • unstack()
    获取多索引列
输出
让我们看看你试过什么。
df = pd.read_csv(io.StringIO("""play_id position    frame   x   y
1   A_1 1   0.1 0.1
1   A_2 1   0.1 0.1
1   B_1 1   0.1 0.1
1   A_1 2   0.1 0.1
1   A_2 2   0.1 0.1
1   B_1 2   0.1 0.1
2   A_1 1   0.1 0.1
2   B_1 1   0.1 0.1
2   B_2 1   0.1 0.1
2   A_1 2   0.1 0.1
2   B_1 2   0.1 0.1
2   B_2 2   0.1 0.1"""), sep="\t")

df = df.sort_values(["position","frame","play_id"]).set_index(["position","frame","play_id"]).stack()
df.reindex(df.index.set_names(["position","frame","play_id","coord"])).unstack([0,1,3])


position  A_1                 A_2                 B_1                 B_2               
frame       1         2         1         2         1         2         1         2     
coord       x    y    x    y    x    y    x    y    x    y    x    y    x    y    x    y
play_id                                                                                 
1         0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  NaN  NaN  NaN  NaN
2         0.1  0.1  0.1  0.1  NaN  NaN  NaN  NaN  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1