pandas - Pandas Group 然后移动列并保留最后一行
问题描述
我想对列idx进行分组,然后移动列val并将最后一行保留为idx。
import pandas as pd
df = pd.DataFrame({'idx':['a','a','b','b'],
'val':['a1','a2','b1','b2']})
df
idx val
0 a a1
1 a a2
2 b b1
3 b b2
我试过了df['val_shift'] = df.groupby('idx').val.shift(1)
idx val val_shift
0 a a1 NaN
1 a a2 a1
2 b b1 NaN
3 b b2 b1
但我想要。
idx val
0 a NaN
1 a a1
2 a a2
3 b NaN
4 b b1
5 b b2
有没有办法得到这个?
解决方案
在我看来,您只是在每个仅'idx'
填充的组前面推了一个空数据框。
pd.concat([
d[['idx']].head(1).append(d)
for _, d in df.groupby('idx')
], ignore_index=True)
idx val
0 a NaN
1 a a1
2 a a2
3 b NaN
4 b b1
5 b b2
选择
df[['idx']].drop_duplicates('idx').append(df).sort_values('idx').reset_index(drop=True)
推荐阅读
- c - [错误]请求指针类型的成员可能您打算在C BST中使用->?)
- javascript - 从对象中删除和更改值
- angular - 如何禁用输入文本中的自动建议
- elasticsearch - 弹性搜索分片分配
- windows - 为什么“ifconfig” docker 命令在 Windows 上响应“bash: ifconfig: command not found”?
- javascript - 如果另一个元素在屏幕外(JS),则显示元素
- javascript - 用对象反应 Native FlatList
- delphi - 如何在 Delphi 中向我的 csExDropDownList 组合框添加标题/文本?
- cuda - 警告:不允许从 __host__ __device__ 函数调用 __host__ 函数
- vb.net - 动画面板宽度取决于提供的秒数