Python GroupBy条件字符串加法

2024-09-28 20:48:21 发布

您现在位置:Python中文网/ 问答频道 /正文

目前,在对数据帧进行分组时,我在设置列表和筛选的组合时遇到了问题。你知道吗

假设我们有一个如下形式的数据帧:

      A       B    C
0    x2   a32cd    1
1    x1   a11aa    0
2    x1     NaN    1 
3    x1   d75dd    0
4    x1   a11aa    1
5    x2   a32cd    1
6    x2   w22xz    0
...

我要找的是对A(字符串)列进行分组,然后列出B(字符串)的非重复非空值,然后我可以退出C(整数)列表。我要找的最后一种形式是:

      A           B 
0    x1   [a11aa, d75dd, ...]
1    x2   [a32cd, w22xz, ...]

我想用以下形式来建立它:

df_x.groupby('A')['B'].apply(list)

然后对它施加一些条件,但我似乎找不到它。我应该为它设置一个函数吗?我来自一个基于MATLAB的背景,所以我倾向于一行一行地遍历整个数据帧。但有人告诉我,一旦你考虑在熊猫身上做这件事,可能有更聪明的方法。你知道吗


Tags: 数据字符串df列表整数nan形式空值
2条回答
>>> df.dropna().groupby("A")["B"].unique()
A
x1    [a11aa, d75dd]
x2    [a32cd, w22xz]
dtype: object

也许您不想dropna在最前面(丢失其他列的信息,例如C)。你知道吗

因此,您可以groupbyagg仅使用B的逻辑

df.groupby('A').B.agg(lambda s: s.dropna().unique().tolist())

A
x1    [a11aa, d75dd]
x2    [a32cd, w22xz]
Name: B, dtype: object

相关问题 更多 >