首页 > 解决方案 > 按 DataFrame 的另一列移动列分组的值

问题描述

我有一个如下所示的数据框:

page_id      content         name
1            {}              John
1            {cat, dog}      Anne
2            {}              Ethan
3            {}              John
3            {sea, earth}    Anne
3            {earth, green}  Ethan
4            {}              Mark

我需要content每个列的page_id值等于下一个content的值,仅适用于相同的 page_ids。我想我需要与 group by 一起使用该功能,但我不知道如何将它放在一起。 page_idshift()page_id

预期的输出将是:

page_id      content         name
1            {cat, dog}      John
1            NaN             Anne
2            NaN             Ethan
3            {sea, earth}    John
3            {earth, green}  Anne
3            NaN             Ethan
4            NaN             Mark

对此问题的任何帮助将不胜感激。

标签: pythonpandasdataframe

解决方案


看起来你想要一个groupbywith shift

df['content'] = df.groupby('page_id').content.apply(lambda x: x.shift(-1))

     page_id         content
0      1.0      {cat, dog}
1      NaN             NaN
2      NaN             NaN
3      3.0    {earth, sea}
4      3.0  {green, earth}
5      NaN             NaN
6      NaN             NaN

推荐阅读