python - Pandas - 基于列对行进行分组并用非空值替换 NaN
问题描述
我正在尝试根据目标“分组依据”列在我的数据帧上创建一些带有字符串的聚合。
想象一下,我有以下包含 4 列的数据框:
我想根据列“Col1”对所有行进行分组,在这种情况下,o NaN 组的值不为空。
所需的输出是这样的:
我也尝试使用普通的:
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
推荐阅读
- java - JAVA JPA 使用接口返回几个实体变量及其名称
- mongodb - 在 MongoDB 中,如何在加入多个集合 ($lookup) 后计算每个类 ($group) 的平均值 ($avg)
- python - 更新 Conda 时访问被拒绝
- django - Docker-compose 在 docker-machine 中不起作用
- ios - 在 UITabBarControllerDelegate 中获取当前活动的 viewController
- mysql - JDO 删除父行而不删除子行
- python - 如何使用 Django 在不同的模板中呈现变量的内容?
- php - Javascript 中的换行符不起作用 - \n \r
- angular - 角度 8 - routerLink 问题。当单击具有 routerLink 属性的锚标记时,它不执行任何操作
- node.js - 无法从使用 AWS Lambda 以 Node.Js 编写的 S3 存储桶下载图像