根据另一列更新一个熊猫列的不可用值

时间:2020-05-16 10:07:11

标签: python pandas

我有一个带有记录的两列数据框:列名['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

1 个答案:

答案 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.transformGroupBy.firstSeries.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