将行数据移动到列(不转置)

时间:2019-03-31 07:20:11

标签: python pandas

假设我与多行有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.Dataset.from_tensor_slices转换为tf.data,并且输入最小的孩子和最大的孩子的年龄/性别,这就是为什么我首先要转换数据的原因。< / p>

1 个答案:

答案 0 :(得分:1)

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