首页 > 解决方案 > 如何在熊猫的任何列中获取包含特定字符串的所有行的平均值?

问题描述

假设我有一个熊猫数据框,其中包含假设调查的答案。有两个问题:“美国国旗上的哪种颜色是你最喜欢的(你可以选择不止一种)?” 和“你的月薪是多少?” 第一个问题有几个可能的答案:

1. red, white, blue
2. red, white
3. red, blue
4. red
5. white, blue
6. white
7. blue

我想获得在第一个问题的答案中分别包含红色、白色和蓝色的所有人的平均工资值。我想得到这样的东西:

FlagColor Salary 
red       4345
white     3444
blue      2356

我到了一个点,我对所有选项都有平均值,我使用了这样的东西:

flagcolors_vs_salary_mean = flagcolors_vs_salary.dropna().groupby('FlagColor' , as_index=False)['Salary'].mean()

如何组合包含每种颜色的所有选项的方法?我需要用第一个问题的答案拆分列吗?请记住,为每个选项投票的人数因选项而异。

标签: pythonpandasdataframe

解决方案


尝试首先将标志颜色分解为自己的行,然后使用groupby

(df.assign(**{'FlagColor': df['FlagColor'].str.split(', ')})
   .explode('FlagColor')
   .groupby('FlagColor', as_index=False)['Salary']
   .mean())

推荐阅读