pandas 单独移动panda Dataframe 的每一行

nhaq1z21  于 2022-11-20  发布在  其他
关注(0)|答案(1)|浏览(118)

我有一个 Dataframe

df1 = pd.DataFrame({
        'uid': [11, 22],
        1: [0.001, 0.005],
        2: [0.004, 0.006],
    }).set_index(')

另一个df指定我们需要对每个uid进行的左移

s_df = pd.DataFrame({
                'uid': [11, 22],
                'shift_val': [0, 1],
            }).set_index('uid')

我想将id 1和2左移相应的shift_瓦尔

out = pd.DataFrame({
            'uid': [11, 22],
            1: [0.001, 0.006],
            2: [0.004, np.nan],
        }).set_index('uid')

请建议
谢谢

mlmc2os5

mlmc2os51#

shift不支持多个句点,因此必须循环。
您可以用途:

df1.apply(lambda s: s.shift(-s_df['shift_val'].get(s.name, 0)), axis=1)

或者,对于concat

pd.concat([df1.loc[x].shift(-s_df['shift_val'].get(x, 0))
           for x in df1.index], axis=1).T

输出量:

相关问题