本文介绍了PANAS-基于列对行进行分组,并将NaN替换为非空值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试基于目标GROUP-BY";列在我的数据框上使用字符串创建一些聚合。

假设我有以下4列数据帧:

我要基于列";col1";对所有行进行分组,在此情况下,使用非NULL值进行分组。

所需输出如下:

我还尝试使用正常:

import pandas as pd
from tabulate import tabulate

df = pd.DataFrame({'Col1': ['A', 'B', 'A'],
                   'Col2': ['X', 'Z', 'X'],
                   'Col3': ['Y', 'D', ''],
                   'Col4': ['', 'E', 'V'],})

print(tabulate(df, headers='keys', tablefmt='psql'))
df2 = df.groupby(['Col1'])
print(tabulate(df2, headers='keys', tablefmt='psql'))

但它不对NaN值进行分组.

如何执行此操作?

谢谢!

推荐答案

如果可能,只需使用GroupBy.first针对每个组的第一个非缺失值提出问题:

df = pd.DataFrame({'Col1': ['A', 'B', 'A'],
                   'Col2': ['X', 'Z', 'X'],
                   'Col3': ['Y', 'D', np.nan],
                   'Col4': [np.nan, 'E', 'V'],})


df2 = df.groupby(['Col1'], as_index=False).first()
print (df2)
  Col1 Col2 Col3 Col4
0    A    X    Y    V
1    B    Z    D    E

这篇关于PANAS-基于列对行进行分组,并将NaN替换为非空值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

05-21 08:59