首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将相同ID出现超过n次的行保存在Pandas中,并转换为每个ID的列表

将相同ID出现超过n次的行保存在Pandas中,并转换为每个ID的列表
EN

Stack Overflow用户
提问于 2015-10-20 15:38:35
回答 1查看 2.8K关注 0票数 6

我有一个DataFrame,如下所示:

代码语言:javascript
复制
     VID  value
1     1    xx
2     2    xx1
3     2    xx2
4     2    xx3
5     2    xx4
6     3    xx
7     3    xx
8     3    xx
9     4    zz1
10    4    zz2
11    4    zz3
12    4    zz4
13    4    zz5

我只想保留VID在多个n=3情况下存在的行。在上面的例子中,我只保留2-5行和9-13行(因为只有VIDs 2和4出现超过3次)。“value”字段与此无关。

在保留所需的行之后,我希望将数据转换为列表列表,同时在每个行的末尾追加一个“end”值:

代码语言:javascript
复制
[[xx1, xx2, xx3, xx4, 'end'], [zz1, zz2, zz3, zz4, zz5, 'end']]

在不使用for循环的情况下,是否有可能获得上述信息?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-20 15:46:41

您可以按VID列分组,然后计算每个组的数量。然后,使用它来索引原始df,以便只使用大于3计数的行。例子-

代码语言:javascript
复制
countdf = df.groupby('VID').count()
result = df.loc[df['VID'].isin(countdf[countdf['value'] > 3].index)]

演示-

代码语言:javascript
复制
In [49]: df
Out[49]:
    VID value
1     1    xx
2     2   xx1
3     2   xx2
4     2   xx3
5     2   xx4
6     3    xx
7     3    xx
8     3    xx
9     4   zz1
10    4   zz2
11    4   zz3
12    4   zz4
13    4   zz5

In [51]: df.groupby('VID').count()
Out[51]:
     value
VID
1        1
2        4
3        3
4        5

In [52]: countdf = df.groupby('VID').count()

In [53]: df.loc[df['VID'].isin(countdf[countdf['value'] > 3].index)]
Out[53]:
    VID value
2     2   xx1
3     2   xx2
4     2   xx3
5     2   xx4
9     4   zz1
10    4   zz2
11    4   zz3
12    4   zz4
13    4   zz5

然后,您可以基于VID再次分组,然后将这些组转换为list,然后再将其列表,例如-

代码语言:javascript
复制
resultlist = result.groupby('VID')['value'].apply(list).tolist()

演示-

代码语言:javascript
复制
In [54]: result = df.loc[df['VID'].isin(countdf[countdf['value'] > 3].index)]

In [55]: result.groupby('VID')['value'].apply(list).tolist()
Out[55]: [['xx1', 'xx2', 'xx3', 'xx4'], ['zz1', 'zz2', 'zz3', 'zz4', 'zz5']]

请注意,上面不会给您列表中的'end'值,我猜这是不必要的,但是如果您真的想要,可以在获得列表后手动添加它。例子-

代码语言:javascript
复制
resultlist = [elem + ['end'] for elem in resultlist]
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33240937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档