【问题标题】:Compare two values in pandas dataframe and if they are equal add it比较熊猫数据框中的两个值,如果它们相等,则添加它
【发布时间】:2020-03-11 16:07:11
【问题描述】:

我有一个数据框,在对其进行分组时,我得到了以下结果集。

Name | Score | Salary A | SALARY B
ABC  | 20    | 300      | 500
XYZ  | 30    | 400      | 600
PQR  | 40    | 300      | 500
TFW  | 50    | 0        | 0
OIP  | 60    | 0        | 0
QWE  | 50    | None     | None
UYT  | 40    | None     | None

我需要比较salaryA 和salaryB 的值(salaryA 与salaryA 和salaryB 与salaryB)。如果 Salary 相同,那么我想对分数求和,否则我必须取分数的 MAX。

预期输出

Name     | Score
ABC, PQR | 60
XYZ      | 30
TFW      | 50
OIP      | 60
QWE      | 50
UYT      | 40

【问题讨论】:

  • 你的预期输出是什么?
  • @Dan 添加了预期输出
  • 我不太明白逻辑,如果两个Names 的Salary A 相同但Salary B 不同会发生什么?你想要max吗?例如如果PQR, Salary B 是 400
  • @Dan 是的。在那种情况下是最大值。
  • max 在这里扮演什么角色?如果组中的值不匹配,则组的总和自动返回最大值.. ?

标签: python python-3.x pandas dataframe pandas-groupby


【解决方案1】:

我是这样做的:

a = pd.read_csv('yourdata.dat',sep='|')
a['total'] = a.iloc[:,2] + a.iloc[:,3]
a.groupby('total').agg({'Name ':','.join,' Score ':'sum'}).reset_index()[['Name ',' Score ']]


         Name    Score 
0  ABC  ,PQR         60
1        XYZ         30

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 2021-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多