首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫数据处理

熊猫数据处理
EN

Stack Overflow用户
提问于 2014-04-02 21:34:56
回答 2查看 437关注 0票数 4

我正在对数据文件执行一个特定的操作。考虑到以下数据:

代码语言:javascript
复制
df1 = pd.DataFrame({
'id': [0, 1, 2, 1, 3, 0],
'letter': ['a','b','c','b','b','a'],
'status':[0,1,0,0,0,1]})

id letter  status
0   a     0
1   b     1
2   c     0
1   b     0
3   b     0
0   a     1

我想要创建另一个数据based,它包含基于以下限制的来自df1的行。

如果两个或更多行具有相同的id和字母,则返回状态为1的任何一行。所有其他行都必须复制。

结果的dataframe应该如下所示:

代码语言:javascript
复制
id letter  status
 0      a       1
 1      b       1
 2      c       0
 3      b       0

任何帮助都是非常感谢的。谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-02 21:41:08

这应该是可行的:

代码语言:javascript
复制
>>> fn = lambda obj: obj[obj.status == 1] if any(obj.status == 1) else obj
>>> df.groupby(['id', 'letter'], as_index=False).apply(fn)
   id letter  status
5   0      a       1
1   1      b       1
2   2      c       0
4   3      b       0

[4 rows x 3 columns]
票数 5
EN

Stack Overflow用户

发布于 2017-10-14 14:21:59

先按status排序,然后使用groupby

代码语言:javascript
复制
In [1932]: df.sort_values(by='status').groupby('id', as_index=False).last()
Out[1932]:
   id letter  status
0   0      a       1
1   1      b       1
2   2      c       0
3   3      b       0
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22823559

复制
相关文章

相似问题

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