我有一个带有记录的两列数据框:列名['user_id','cookie_id'],如果它们是NaN并且通用cookie_id有可用的user_id值,我想更新user_id值。
示例:
(before)
user_id cookie_id
2 15
2 15
3 22
NaN 15
NaN 15
NaN 38
(after)
user_id cookie_id
2 15
2 15
3 22
2 15
2 15
NaN 38
答案 0 :(得分:2)
如果需要仅将丢失的值替换为每个SELECT m.m_name as 'Food Item', SUM(od.od_quantity*m.m_price) as 'Items Sold',
Sum(Sum(od.od_quantity*m.m_price)) as 'Total'
FROM orderDetails od left join
menu m
on od.od_menuID=m.m_id left join
orders o
on od.od_id=o.o_id
WHERE o_date >= DATEADD(day,-30,GETDATE()) and
o_date <= getdate()
group by m.m_name,m.m_price
order by SUM(od.od_quantity) DESC
的第一个非丢失的值,请使用GroupBy.transform
和GroupBy.first
和Series.fillna
:
user_id
或者,如果需要每个组的第一个非缺失值,则使用:
df['user_id'] = df['user_id'].fillna(df.groupby("cookie_id")['user_id'].transform('first'))
print (df)
user_id cookie_id
0 2.0 15
1 2.0 15
2 3.0 22
3 2.0 15
4 2.0 15
5 NaN 38