大家好,我是 python 的新手,现在我开始使用一些库,例如 Pandas 和 Numpy。最近,老师给我做这个练习,我不知道该用什么方法。详情如下:
df1 = pd.DataFrame({'col1': [0, 1, 1, 0, 3],
'col2': [23, 4, 1, 1, 3],
'col3': [0, 5, 2, 1, 1],
'col4': [1, 2, 6, 4, 0],
'col5': [4, 15, 0, 2, 5],
'loc': [1, 4, 2, 3, 2]})
col1 - col5: 随机数
loc:值所在的位置。
计算返回每列值的’val’,位置在’loc’中给出。
示例:在第 0 行中,loc = 1,val = 23。在第 1 行中,loc = 4,val = 15,等等。
结果应该是这样的:
df = pd.DataFrame({'col1': [0, 1, 1, 0, 3],
'col2': [23, 4, 1, 1, 3],
'col3': [0, 5, 2, 1, 1],
'col4': [1, 2, 6, 4, 0],
'col5': [4, 15, 0, 2, 5],
'loc': [1, 4, 2, 3, 2],
'val': [23, 15, 2, 4, 1]})
我试过 iloc 和 loc 之类的东西来计算“val”。但是,当数据框变大时,我不能再使用这种方法了。有没有更快的方法来计算’val’?我需要使用循环来计算’val’吗?
df1 = df['loc']
df.iloc[0,df1[0]]
df.iloc[1,df1[1]]
df.iloc[2,df1[2]]
PS:对不起我的英语不好,但我真的不知道如何用英语解释这个练习,我只是尽力而为:(
原文由 Long_NgV 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用 numpy 索引,尤其是在性能很重要的情况下:
性能: