2017-04-21 44 views
2

我有一個樣本數據框,看起來像這樣。按min分組,然後用另一列的值填充NAA

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的起始頁是Null(我把Null的字符串'NA'),那麼我想使用該行中的頁名來填充起始頁列。我還希望爲具有相同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]}) 

回答

3

fillnatransform

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 
+0

非常有趣的解決方案! – MaxU