首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在特定条件下使用groupby进行数据提取?

如何在特定条件下使用groupby进行数据提取?
EN

Stack Overflow用户
提问于 2020-01-07 17:54:23
回答 2查看 158关注 0票数 0

我有一个这样的数据集:

代码语言:javascript
运行
复制
x = {'column1': ['a','a','b','b','b','c','c','c','d'],
    'column2': [1,0,1,1,0,1,1,0,1]
    }
df = pd.DataFrame(x, columns = ['column1', 'column2'])
print (df)

如何从第二列中仅提取值为1的数据(如下所示):

代码语言:javascript
运行
复制
x = {'column1': ['a','b','b','c','c','d'],
    'column2': [1,1,1,1,1,1]
    }
df = pd.DataFrame(x, columns = ['column1', 'column2'])
print (df)

另外,我如何计算列1中每个值的1的数量,并创建一个新列,并将该信息插入coulmn_1中的各个索引(例如,column_1中的索引值a有多少个1?).So它将数据帧转换为以下格式:

代码语言:javascript
运行
复制
x = {'column1': ['a','b','b','c','c','d'],
    'column2': [1,1,1,1,1,1],
 'column3': [1,2,2,2,2,1]
    }
df = pd.DataFrame(x, columns = ['column1', 'column2','column3'])
print (df)
EN

回答 2

Stack Overflow用户

发布于 2020-01-07 17:57:55

第一个问题:

代码语言:javascript
运行
复制
df[df.column2==1].reset_index(drop=True)

会给你带来

代码语言:javascript
运行
复制
    column1     column2
0   a   1
1   b   1
2   b   1
3   c   1
4   c   1
5   d   1

第二个问题:

代码语言:javascript
运行
复制
df['column3'] = df.groupby('column1').transform(len)

会给你带来

代码语言:javascript
运行
复制
    column1     column2     column3
0   a   1   1
1   b   1   2
2   b   1   2
3   c   1   2
4   c   1   2
5   d   1   1
票数 3
EN

Stack Overflow用户

发布于 2020-01-07 17:57:13

使用boolean indexingSeries.eq进行比较,就像使用==,然后使用Series.mapSeries.value_counts

代码语言:javascript
运行
复制
df = df[df['column2'].eq(1)]
df['column3'] = df['column1'].map(df['column1'].value_counts())

GroupBy.transformGroupBy.size的替代方案

代码语言:javascript
运行
复制
df['column3'] = df.groupby('column1')['column1'].transform('size')

代码语言:javascript
运行
复制
print (df)
  column1  column2  column3
0       a        1        1
2       b        1        2
3       b        1        2
5       c        1        2
6       c        1        2
8       d        1        1

对于默认索引,最后使用带有drop=TrueDataFrame.reset_index

代码语言:javascript
运行
复制
df = df.reset_index(drop=True)
print (df)
  column1  column2  column3
0       a        1        1
1       b        1        2
2       b        1        2
3       c        1        2
4       c        1        2
5       d        1        1
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59625993

复制
相关文章

相似问题

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