为了账号安全,请及时绑定邮箱和手机立即绑定

在python中动态更改行值

在python中动态更改行值

牛魔王的故事 2021-06-13 18:14:36
我在 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不知道我的要求有没有说清楚,谢谢谁能帮帮我。
查看完整描述

2 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

使用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


查看完整回答
反对 回复 2021-06-16
?
慕雪6442864

TA贡献1812条经验 获得超5个赞

使用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


查看完整回答
反对 回复 2021-06-16
  • 2 回答
  • 0 关注
  • 188 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信