按分组分组并使用另一列的值填充NAs

时间:2017-04-21 16:21:12

标签: python pandas

我有一个看起来像这样的示例数据框。

df = pd.DataFrame (data = {'uid': [1,1,1,2,2,3], 'pagename':['home', 'blah', 
'blah', 'home', 'blah', 'blah'], 'startpage': ['NA', 'NA', 'NA', 'home', 
'home', 'blah'], 'date_time': [0,1,2,5,9,1]})

我想要做的是按UID分组并找到min date_time。如果min date_time的起始位置为Null(我将字符串' NA'表示为Null),那么我想使用该行中的页面名来填充起始列。我还希望为具有相同UID的所有行填充起始页。

这是我想要的结束数据帧。

df = pd.DataFrame (data = {'uid': [1,1,1,2,2,3], 'pagename':['home', 'blah', 
'blah', 'home', 'blah', 'blah'], 'startpage': ['home', 'home', 'home', 
'home', 'home', 'blah'], 'date_time': [0,1,2,5,9,1]})

1 个答案:

答案 0 :(得分:3)

带有fillna

transform

i = df.groupby('uid').date_time.transform('idxmin')
df.startpage = df.startpage.fillna(i.map(df.pagename))

print(df)

   date_time pagename startpage  uid
0          0     home      home    1
1          1     blah      home    1
2          2     blah      home    1
3          5     home      home    2
4          9     blah      home    2
5          1     blah      blah    3