首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果我有多个过滤器,我如何创建一个数据框架?

如果我有多个过滤器,我如何创建一个数据框架?
EN

Stack Overflow用户
提问于 2021-01-12 20:52:12
回答 2查看 39关注 0票数 0

我有一个df:

代码语言:javascript
复制
df = pd.DataFrame({'Company': {0: 'KPMG', 1: 'Google', 2: 'LIC', 3: 'ABC', 4: 'Apple'},
 'Sector': {0: 'Finance', 1: 'Tech', 2: 'Finance', 3: 'Finance', 4: 'Tech'},
 'Cap': {0: 100, 1: 200, 2: 100, 3: 100, 4: 300}})

我需要计算的比率(新的一栏,需要添加)的上限,每个公司取决于‘部门’。

例如:金融业的总上限为300,因此毕马威的“比率”为100/300。同样的,我也必须为科技公司工作。可能会有新的公司和部门在后面添加,所以它必须是可配置的,这就是为什么我要使用列表格式。

这就是我试过的:

代码语言:javascript
复制
sector_list =['Finance','Tech']

for i in sector_list:
    total_cap_per_sector = df.loc[df['Sector'] == i, 'Cap'].sum()
    ratios = df.loc[df['Sector'] == i, 'Cap']/total_cap_per_sector
df['Ratio'] = calc
df.to_csv('new_df.csv')

new_df看起来像:

我明白,因为它是一个for循环,它只取最后一个循环值,所以我不会得到金融部门的空白。

我想了解如何才能得到sector_list中提到的所有扇区都填充了“比率”值的df?

对于上面的示例,最终结果应该如下所示:

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-01-12 21:02:34

groupby和transform可以

代码语言:javascript
复制
df['ratio']=df.groupby('Sector')['Cap'].transform(lambda x:x/x.sum()).round(1)



Company   Sector  Cap  Ratio
0    KPMG  Finance  100    0.3
1  Google     Tech  200    0.4
2     LIC  Finance  100    0.3
3     ABC  Finance  100    0.3
4   Apple     Tech  300    0.6
票数 1
EN

Stack Overflow用户

发布于 2021-01-12 20:58:11

取级数df['Cap'],除以每个组的和,使用transform('sum')创建一个计算的列作为series。关键是使用transform使从组创建的系列与df['Cap']的长度相同。

代码语言:javascript
复制
df = pd.DataFrame({'Company': {0: 'KPMG', 1: 'Google', 2: 'LIC', 3: 'ABC', 4: 'Apple'},
 'Sector': {0: 'Finance', 1: 'Tech', 2: 'Finance', 3: 'Finance', 4: 'Tech'},
 'Cap': {0: 100, 1: 200, 2: 100, 3: 100, 4: 300}})

df['Ratio'] = round(df['Cap'] / df.groupby('Sector')['Cap'].transform('sum'), 1)

df
Out[1]: 
  Company   Sector  Cap  Ratio
0    KPMG  Finance  100    0.3
1  Google     Tech  200    0.4
2     LIC  Finance  100    0.3
3     ABC  Finance  100    0.3
4   Apple     Tech  300    0.6
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65691873

复制
相关文章

相似问题

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