gpt4 book ai didi

python - 按最小值分组并使用另一列第 2 部分中的值填充 NA

转载 作者:太空宇宙 更新时间:2023-11-03 15:16:51 25 4
gpt4 key购买 nike

这是原来的问题: Group by min and fill NAs with value from another column

我有这个数据框:

mydf = pd.DataFrame (data = {'uid': [1,1,1,2,2,3,4,4,4,4], 'pagename':
['home', 'blah',
'blah', 'home', 'blah', 'blah','blah','home','blah','blah'], 'startpage':
[np.nan, np.nan, np.nan, 'home',
'home', 'blah',np.nan,np.nan,np.nan,np.nan], 'date_time':
[0,1,2,5,9,1,1,2,3,4], 'page_event': [0,0,0,0,0,0,10,0,0,10]})

我想获取这个数据框:

endingdf = pd.DataFrame (data = {'uid': [1,1,1,2,2,3,4,4,4,4], 'pagename':
['home', 'blah', 'blah', 'home', 'blah','blah','blah','home','blah','blah'],
'startpage': [np.nan, np.nan, np.nan, 'home',
'home','blah',np.nan,np.nan,np.nan,np.nan],
'date_time': [0,1,2,5,9,1,1,2,3,4], 'page_event': [0,0,0,0,0,0,10,0,0,10],
'new_start_page':['home', 'home', 'home', 'home', 'home', 'blah', 'home',
'home', 'home', 'home']})

我想要做的是按UID分组,如果startpageNULL,则使用第一个pagename访问的时间(最短日期时间),但仅当 page_event = 0 时。因此,如果第一个 pagename 具有 page_event = 10,则跳过它,直到 page_event = 0

最佳答案

e = mydf.page_event
p = mydf.pagename
s = mydf.startpage
u = mydf.uid
m = e.mask(e == 10).groupby(u).apply(pd.Series.first_valid_index)

s.fillna(u.map(m).map(p), inplace=True)

print(mydf)

date_time page_event pagename startpage uid
0 0 0 home home 1
1 1 0 blah home 1
2 2 0 blah home 1
3 5 0 home home 2
4 9 0 blah home 2
5 1 0 blah blah 3
6 1 10 blah home 4
7 2 0 home home 4
8 3 0 blah home 4
9 4 10 blah home 4

关于python - 按最小值分组并使用另一列第 2 部分中的值填充 NA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43814414/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com