在Pandas中按group_by折叠数据时忽略NaN行

gr8qqesn  于 2023-03-11  发布在  其他
关注(0)|答案(1)|浏览(185)

我希望使用groupby和agg折叠数据集,并希望将NaN值保留为单独的行而不折叠。例如,初始数据为:

mydata = {'category' : [np.NaN, np.NaN, "a", "b", "b", "c"],'category2' : ["f", "f", "r", "h", "h", "j"], 'value' : ['12', '11', '10', '13', '15', '11']}
df = pd.DataFrame(mydata, columns=['category','category2','value'])

df=df.groupby(['category','category2'],  dropna=False 
).agg({'value':'max'})

    category    category2   value
0   NaN              f       12
1   NaN              f       11
2   a                r       10
3   b                h       13
4   b                h       15
5   c                j       11

电流输出:

category  category2   value
0   NaN        f          12
1   a          r          10
2   b          h          15
3   c          j          11

预期输出:

category  category2   value
0   NaN        f          12
1   NaN        f          11
2   a          r          10
3   b          h          15
4   c          j          11

除了将 Dataframe 拆分为两个NaN和非NaN Dataframe 之外,是否有其他方法可以使用group_by执行此操作?

zmeyuzjn

zmeyuzjn1#

两种情况的连接行(具有NaN值,但聚合时不具有NaN):

df = pd.concat([df[df['category'].isna()],
                df.groupby(['category','category2'])
               .agg({'value':'max'}).reset_index()])
category category2 value
0      NaN         f    12
1      NaN         f    11
0        a         r    10
1        b         h    15
2        c         j    11

相关问题