我正在尝试根据groupby中一行的条件更改groupby中的列
我有一个看起来像这样的数据:
ID year month type
1 2008 1 A
1 2008 2 NAN
1 2009 1 B
2 2003 3 B
2 2003 4 B
2 2003 8 A
3 2009 9 B
我想通过以下方式更改数据: 对于每个ID,如果2008年1月或2008年2月存在一行,并且Type为非NAN值,则将2008年1月至2009年12月之间日期的所有行替换为Fab 2008的行类型(如果存在)或2008年1月,如果不是
我尝试使用.groupby(id).isin({'year':[2008],'month':[1,2]})。any(),但它只会生成一个新的布尔变量,而不是更改现有变量
答案 0 :(得分:0)
为什么不对所有行强制使用严格类型?然后,您的问题简化为:
month_years = df.loc[:, ['year', 'month']]
updated_types = get_default_types(month_years)
updated_df = df.assign(type=updated_types)