Python 跨dataframe';熊猫';

Python 跨dataframe';熊猫';,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个如下所述的数据框架,如何才能得到对不同“组织”的总体业务贡献至少30%的“类别”。我尝试了下面的查询,但没有成功 Organization_category_df = df.loc[(df['Year 2014-15']) >= 0.3 * (df['Category'] == 'Total Business')] My bad我无法添加表,无论如何,我创建了一个html表,至少在复制数据时应该会有帮助。 2014-2015年 类别 组织机构 35000 笔记本电脑 xyz

我有一个如下所述的数据框架,如何才能得到对不同“组织”的总体业务贡献至少30%的“类别”。我尝试了下面的查询,但没有成功

Organization_category_df = df.loc[(df['Year 2014-15']) >= 0.3 * (df['Category'] == 'Total Business')]


My bad我无法添加表,无论如何,我创建了一个html表,至少在复制数据时应该会有帮助。


2014-2015年
类别
组织机构
35000
笔记本电脑
xyz
25000
药片
xyz
40000
可移动的
xyz
100000
总业务
xyz
23000
笔记本电脑
pqr
10000
药片
pqr
15000
可移动的
pqr
48000
总业务
pqr

IIUC,带有小计的行(“总业务”)使事情变得复杂。很容易创建一个过滤器来过滤掉这些,然后您可以使用来过滤您的
DataFrame

如果需要,您可以使用和重新插入“Total Business”行:

[外]

并重新添加“总业务”:

df_filtered = pd.concat([df_filtered, df[mask]]).sort_index()
[外]

在这里,df.groupby('category')['Year 2014-15'].sum()将按类别对整个组织的业务进行汇总。您可以计算val,它将占整个业务的30%,而整个命令将为您提供构成val以上的类别

30%的业务作为整体或每个组织30%的业务存在差异,这将决定val值

(df['category'].unique())[df.groupby('category')['Year 2014-15'].sum() > val ]

. 请以文本形式重新发布很糟糕,我无法添加表格,无论如何,我创建了一个html表格,至少对复制数据有帮助。我能知道您在代码“df_filtered=df_filtered[df_filtered.groupby('Organization')['Year 2014-15'].transform(lambda x:x/x.sum()).ge(0.3)]中考虑“总体业务”在哪里吗,在
transform
方法中
x.sum()
是每个组织的“2014-15年”总和。因此,对于
'xyz'
'pqr'
df_filtered = pd.concat([df_filtered, df[mask]]).sort_index()
   Year 2014-15        Category Organization
0         35000          laptop          xyz
2         40000          mobile          xyz
3        100000  Total Business          xyz
4         23000          laptop          pqr
6         15000          mobile          pqr
7         48000  Total Business          pqr
(df['category'].unique())[df.groupby('category')['Year 2014-15'].sum() > val ]