PANAS-基于列对行进行分组,并将NaN替换为非空值

2022-02-26 00:00:00 python pandas pandas-groupby

问题描述

我正在尝试基于目标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

相关文章