如何仅基于组的一行来限制groupby中的更改

时间:2019-01-22 22:29:41

标签: python pandas pandas-groupby

我正在尝试根据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(),但它只会生成一个新的布尔变量,而不是更改现有变量

1 个答案:

答案 0 :(得分:0)

为什么不对所有行强制使用严格类型?然后,您的问题简化为:

month_years = df.loc[:, ['year', 'month']]
updated_types = get_default_types(month_years)
updated_df = df.assign(type=updated_types)