我在Python的DataFrame中具有以下信息:
## x1 x2 x3 x4 x5 colum
##0 206 214 021 122 554 2
##1 226 234 123 456 789 4
##2 245 253 558 855 123 5
##3 265 272 000 111 222 4
##4 283 291 214 589 996 1
并且我需要根据包含colum列的值生成一个新列,方法如下:
## x1 x2 x3 x4 x5 colum newColum
##0 206 214 021 122 554 2 214
##1 226 234 123 456 789 4 456
##2 245 253 558 855 123 5 123
##3 265 272 000 111 222 4 111
##4 283 291 214 589 996 1 283
我不知道我的要求是否明确,谢谢谁能帮助我。
答案 0 :(得分:1)
使用pd.DataFrame.lookup
并将整数映射到列标签:
df['new'] = df.lookup(df.index, 'x' + df['colum'].astype(str))
print(df)
x1 x2 x3 x4 x5 colum new
0 206 214 21 122 554 2 214
1 226 234 123 456 789 4 456
2 245 253 558 855 123 5 123
3 265 272 0 111 222 4 111
4 283 291 214 589 996 1 283
答案 1 :(得分:0)
使用numpy indexing
:
df['new'] = df.values[np.arange(len(df)), df['colum'] - 1]
print (df)
x1 x2 x3 x4 x5 colum new
0 206 214 21 122 554 2 214
1 226 234 123 456 789 4 456
2 245 253 558 855 123 5 123
3 265 272 0 111 222 4 111
4 283 291 214 589 996 1 283