python - 如何获取匹配 df ['keys' ] 的差异并为它们创建新列

标签 python pandas diff

我正在尝试找出给定一组专业的性别之间的工资差距。

这是我的表格的文本版本:

    gender   field group   logwage
0     male      BUSINESS  7.229572
10  female      BUSINESS  7.072464
1     male    COMM/JOURN  7.108538
11  female    COMM/JOURN  7.015018
2     male  COMPSCI/STAT  7.340410
12  female  COMPSCI/STAT  7.169401
3     male     EDUCATION  6.888829
13  female     EDUCATION  6.770255
4     male   ENGINEERING  7.397082
14  female   ENGINEERING  7.323996
5     male    HUMANITIES  7.053048
15  female    HUMANITIES  6.920830
6     male      MEDICINE  7.319011
16  female      MEDICINE  7.193518
17  female        NATSCI  6.993337
7     male        NATSCI  7.089232
18  female         OTHER  6.881126
8     male         OTHER  7.091698
9     male  SOCSCI/PSYCH  7.197572
19  female  SOCSCI/PSYCH  6.968322

diff 对我不起作用,因为它会取每个连续专业之间的差异。

这是现在的代码:

for row in sorted_mfield:
   if sorted_mfield['field group']==sorted_mfield['field group'].shift(1):
    diff= lambda x: x[0]-x[1]

我的下一个策略是回到未排序的数据框,其中男性和女性是自己的列,并从那里有所作为,但因为我花了一个小时尝试这样做,而且对 Pandas 还很陌生,我想我应该询问并了解这是如何运作的。谢谢。

最佳答案

使用 Pandas.DataFrame.shift() 的解决方案在数据的排序版本中:

df.sort_values(by=['field group', 'gender'], inplace=True)
df['gap'] = df.logwage - df.logwage.shift(1)
df[df.gender =='male'][['field group', 'gap']]

使用示例数据生成以下输出:

    field group     gap
0   BUSINESS        0.157108
2   COMM/JOURN      0.093520
4   COMPSCI/STAT    0.171009
6   EDUCATION       0.118574
8   ENGINEERING     0.073086
10  HUMANITIES      0.132218
12  MEDICINE        0.125493
15  NATSCI          0.095895
17  OTHER           0.210572
18  SOCSCI/PSYCH    0.229250

注意:它认为每个字段组始终有一对值。如果您想验证它或消除没有该对的字段组,请使用下面的代码进行过滤:

df_grouped = df.groupby('field group') 
df_filtered = df_grouped.filter(lambda x: len(x) == 2)

关于python - 如何获取匹配 df ['keys' ] 的差异并为它们创建新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55105243/

相关文章:

python - 在 pandas/numpy 中运行应用函数时访问元素的 2D 索引?

python - DASK:Typerrror:列分配不支持类型 numpy.ndarray 而 Pandas 工作正常

python使用默认函数聚合groupby

java - 如何找到两个Java项目之间的差异

python - 我可以向写入单元格的公式添加字符吗?

python - 如何在 python 窗口应用程序中实现拖动功能(或缩放)?

git:具有提交限制的累积差异

svn - 如何使 svn diff 忽略某些文件?

python - 在 App Engine 中接收电子邮件附件 Unicode 文本文件出现 Python 错误

python - 使用 python 从 pdf 中读取表格