python - 将行数据移动到列(不转置)
问题描述
假设我user - child
有多行的关系
user_id child_id birth_date gender
0 1 1.0 2018-01-01 m
1 1 2.0 2018-01-03 f
2 1 3.0 2018-01-04 m
3 2 NaN None None
现在我想挑选最小和最大的孩子并将它们放在列中
user_id kid_1_birth_date kid_1_gender kid_2_birth_date kid_2_gender
0 1 2018-01-01 m 2018-01-04 m
1 2 None None None None
我目前正在做groupby
,然后group.iterrows
向新创建的数据框添加行,想知道是否有更好的方法
我正在使用数据框并使用 tf.data 转换为 tf.data tf.data.Dataset.from_tensor_slices
,并且我正在输入最小的孩子和最年长的孩子的 age/gender ,这就是我首先转换数据的原因。
解决方案
一种方式drop_duplicates
,然后merge
df1=df.sort_values('birth_date').drop_duplicates('user_id')
df2=df.sort_values('birth_date').drop_duplicates('user_id',keep='last')
df1.drop('child_id',1).merge(df2.drop('child_id',1),on='user_id',suffixes=('young','old'))
Out[474]:
user_id birth_dateyoung genderyoung birth_dateold genderold
0 1 2018-01-01 m 2018-01-04 m
1 2 NaT None NaT None
推荐阅读
- javascript - 正则表达式的正确语法以限制匹配组的总长度
- javascript - 从javascript中的api获取数据
- quickfixn - 如何阅读自定义消息
- c# - C# WPF DataGrid 可编辑组合框返回 -1 作为单击编辑的选定行
- javascript - WebdriverIO 无法获取输入值?
- css - Bootstrap 4 弹出箭头轮廓
- python - Python Pandas 比较多列中的值以查找部分重复并删除记录
- oauth-2.0 - Google 不支持取消对 Oauth 流程的同意
- sql - 从起点和着陆中获取前 10 个机场名称
- android - 减少菜单项之间的空间