如何根据另一列的值重新排列熊猫中的列

时间:2019-11-07 13:39:28

标签: python pandas

我想通过基于该列的值移动现有列的索引来在数据框中创建新列。

预期的数据框: ataframe

我认为.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,依此类推。

1 个答案:

答案 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大于数据框中的行数的情况,则此代码可能会引发错误。