pandas 我如何通过某些条件和求和到一个新的 Dataframe 中?

f45qwnt8  于 2023-03-28  发布在  其他
关注(0)|答案(2)|浏览(134)

dataframe
my attempted solution
我试图做一个条形图,显示每个公司的非白人员工的百分比。在我尝试的解决方案中,我已经按种族对员工总数进行了求和,但我很难将其带入下一个步骤,即按除白人之外的所有种族对员工进行求和,然后创建一个新的df,其中包含公司和非白人员工的百分比。
我应该怎么做呢?我使用groupby的方法是否不正确?
我试过用
e2 = df_ethnicities.groupby([“Company”,“Ethnicity”]).agg({“Count”:sum}).reset_index()
首先按公司获得每个种族的计数。

piwo6bdm

piwo6bdm1#

你可以先去掉reset_index,然后再去掉unstack。这将导致一个DataFrame在不同的etnicities中有不同的计数。1减去白色员工的百分比将得到所需的公式。

df_agg = df_ethnicities.groupby(["Company", "Ethnicity"]).agg({"Count": sum}).unstack()
percentatges = 1-df_agg[('Count','White')]/df_agg.sum(axis=1)
roqulrg3

roqulrg32#

通过组来获取计数是一个很好的方法,现在要获取百分比,我会执行以下操作:
按公司汇总每个种族的计数

ethnicity_counts = df_ethnicities.groupby(["Company", "Ethnicity"])["Count"].sum()

按公司计算非白人雇员的总数

nonwhite_counts = ethnicity_counts.loc[pd.IndexSlice[:, ~'White'], :].groupby("Company").sum()

按公司计算员工总数

total_counts = ethnicity_counts.groupby("Company").sum()

计算每个公司非白人雇员的百分比

percent_nonwhite = nonwhite_counts / total_counts * 100

创建一个包含company和percent非白色列的新数据框

df_percent_nonwhite = percent_nonwhite.reset_index(name="% Non-White")

相关问题