2016-11-11 100 views
0

我有一个数据框,其中包含一个工资列,指定一个小时工资和一个联合列,指定员工是否在工会。还有其他变数,但现在它们并不重要。我试图找到工会中员工的平均工资。我编写了代码,它提供了一个关于员工是否在工会中的真/假清单。但是,我不知道如何应用这份名单来获得平均工资。预先感谢您的帮助。Python熊猫数据框控制流程

#Read cps.csv file 
import pandas as pd 
cps_df = pd.read_csv('cps.csv') 
cps_df 

#Function to determine whether or not an employee is in a union 
def hourly_wage(x): 
""" return true if union else false """ 

if x['union'] == 'Union': 
    return True 
else: 
    return False 

#Function to create a list of union vs non-union 
def union_list(y): 
    """ return a list determining union vs non-union """ 

    return [hourly_wage(x) for index, x in y.iterrows()] 

#Print list 
%time 
print(union_list(cps_df)) 
+0

也许我错过了这里的一些东西,但为什么不'cps_df [cps_df [''union'] =='Union'] ['wage']。mean()'? – iayork

+0

我需要创建一个熊猫数据框,并通过使用控制流遍历数据框的每一行来计算工会工人的平均小时工资。所以我猜我需要像这样设置它。我错了吗? –

回答

0

我想你可以用更方便的方法做到这一点。熊猫对于这样的事情很棒。

我们假设工资栏是'工资'。然后,代码看起来如下:

import pandas as pd 
cps_df = pd.read_csv('cps.csv') 
print('Union workers mean wage: ', cps_df[cps_df.union == 'Union'].wage.mean()) 

什么它本质上是做:1。 所有选择工会工人(cps_df [cps_df.union == '联盟']) 2. Aplies意味着()函数来他们的工资(.wage.mean())

希望这会有所帮助。

+0

非常感谢您的回复。我知道肯定有更简单的方法来获得平均值。但是,我需要使用这个过程。另外,我需要知道如何以更复杂的方式进行此操作。 –

+0

所以我想这是一个大数据问题。你为什么不收取工资,然后使用你的指标函数hourly_wage(x)? –

+0

我的意思是类似的东西: 高清union_wage_list(Y): “” “返回一个列表的工资确定工会工人的 ”“” 回报[X [ '工资']索引,X在y.iterrows()如果hourly_wage(x)] –