【问题标题】:Shift each row of pandas dataframe independently独立移动每一行熊猫数据框
【发布时间】:2022-11-16 21:50:56
【问题描述】:

我有一个数据框

    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')

我想通过相应的 shift_val 左移 ids 1 和 2

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

请建议

谢谢

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    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
    

    输出:

             1      2
    uid              
    11   0.001  0.004
    22   0.006    NaN
    

    【讨论】:

      猜你喜欢
      • 2022-08-02
      • 2017-01-05
      • 2012-09-01
      • 2016-05-21
      • 1970-01-01
      • 2019-03-08
      • 2013-12-02
      相关资源
      最近更新 更多