从pandas中的行中的唯一值创建新列

时间:2016-09-08 17:57:47

标签: python pandas dataframe

我正在尝试在pandas列中使用唯一值来生成一组新列。这是一个例子DataFrame

    meas1  meas2  side  newindex
0       1      3     L         0
1       2      4     R         0
2       6      8     L         1
3       7      9     R         1

我想将我的测量列与我的关键列“相乘”以生成DafaFrame,如下所示:

   meas1_L  meas1_R  meas2_L  meas2_R
0        1        2        3        4
1        6        7        8        9

请注意,它基本上与this question相反。

2 个答案:

答案 0 :(得分:4)

使用DataFrame.pivot

# Perform the pivot.
df = df.pivot(index='newindex', columns='side').rename_axis(None)

# Format the columns.
df.columns = df.columns.map('_'.join)

结果输出:

   meas1_L  meas1_R  meas2_L  meas2_R
0        1        2        3        4
1        6        7        8        9

答案 1 :(得分:1)

使用groupby.prod的另一种解决方案:

df = df.groupby(['side', 'newindex']).prod().unstack(level=0)
df.columns = ['_'.join(c[0::]) for c in df.columns]

          meas1_L  meas1_R  meas2_L  meas2_R
newindex                                    
0               1        2        3        4
1               6        7        8        9