我想通过基于该列的值移动现有列的索引来在数据框中创建新列。
我认为.diff()函数可以在这里为我提供帮助,对于参数'periods',我可以提及希望新列移动的列名。
df['expected_new_col']= df['Age'].diff(periods = df['d_id_max'])
从图像中可以看到,col'Expected_new_col'是基于col'Age'和col'd_id_max'的。因此,对于14岁,如果我们移动2个索引,我们得到55,对于25岁,如果我们移动1个索引,我们得到55,依此类推。
答案 0 :(得分:0)
如果我很了解您的问题,则可以这样做(如果您的数据帧索引为0、1、2、3 ...):
import pandas as pd
df = pd.DataFrame({'Name': ['Sam', 'Andrea', 'Alex', 'Robin', 'Kia', 'Sia'], 'Age':[14,25,55,8,21,43], 'd_id_max':[2,1,1,2,2,2]})
df['Expected_new_col'] = df.loc[df.index + df.d_id_max, 'Age'].to_numpy()
print(df)
如果您不处理df.index + df.d_id_max大于数据框中的行数的情况,则此代码可能会引发错误。