python - 按 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_id
shift()
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
对此问题的任何帮助将不胜感激。
解决方案
看起来你想要一个groupby
with 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
推荐阅读
- javascript - 使用 joi 验证一个数组的长度与另一个数组的长度
- java - JTable 在选择后将 JComboBox 和 JCheckBox 恢复为值
- python - 将 1D 数组应用于 2D 数组的每个单元以创建 3D 数组
- html - 使用 text-center 属性在 ion-item 中对齐按钮不起作用
- php - Wink API v2 Hello World 在 PHP
- jpa - 控制器中的事务中止
- macos - 如何在 MacOS Mojave 上增加文件描述符的数量?
- angular - Angular Material Change Detection using ngOnChanges throwing error, "ExpressionChangedAfterItHasBeenCheckedError"
- amazon-dynamodb - DynamoDB 分页 - 知道什么时候没有更多结果
- html - 表单不从动态添加的字段中获取数据