我有一个看起来像这样的示例数据框。
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]})
答案 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