Python 跨dataframe';熊猫';
我有一个如下所述的数据框架,如何才能得到对不同“组织”的总体业务贡献至少30%的“类别”。我尝试了下面的查询,但没有成功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
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 ]