首页 > 解决方案 > 如何对数据框值进行分组、排序和填充

问题描述

我正在尝试从 D = 1 列的熊猫数据框中选择行,然后我想按 A 列对所选行进行分组,然后使用ffill 函数将 C 列中的值复制到该组的所选行中 - 请注意C 的值因组而异。

示例 - 从这个开始:

A       B        C         D
101     alpha    NaN       1
101     beta     NaN       1
103     alpha    NaN       1
102     alpha    NaN       0
102     beta     NaN       0
103     beta     NaN       0
101     delta    happy     1
102     delta    NaN       0
103     delta    sad       1

想以这个结束:

A       B        C         D
101     alpha    happy     1
101     beta     happy     1
101     delta    happy     1
102     alpha    NaN       0
102     beta     NaN       0
102     delta    NaN       0
103     alpha    sad       1
103     beta     sad       1
103     delta    sad       1

我一直在尝试使用 groupby、sort_values 和 ffill - 但似乎无法正确确定操作顺序。

标签: pythonpandaspandas-groupby

解决方案


可以通过对它们进行排序和分组来检索它。

df = df.sort_values(['A','B'], ascending=[True,True])
df['C'] = df.groupby('A')['C'].fillna(method='bfill')
df

A   B   C   D
0   101 alpha   happy   1
1   101 beta    happy   1
6   101 delta   happy   1
3   102 alpha   NaN 0
4   102 beta    NaN 0
7   102 delta   NaN 0
2   103 alpha   sad 1
5   103 beta    sad 0
8   103 delta   sad 1

推荐阅读