独立移动pandas数据框的每一行



我有一个数据框架

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

和另一个df指定我们需要为每个id

进行左移
s_df = pd.DataFrame({
'id': [11, 22],
'shift_val': [0, 1],
}).set_index('id')

我想左移id 1和2对应的shift_val

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

请建议

感谢

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

最新更新