更改熊猫数据框中重复项的值

时间:2019-02-25 16:33:54

标签: python pandas duplicates

给出的数据框是

var1  var2  var3  var4  var5
  23     1     0     0     0
  23     0     0     0     1
  43     0     0     0     1
  43     0     1     1     0

我需要检查变量var2,var3,var4,var5的值,并更改二进制值,对于var1中重复的行,所有其他变量都具有相同的值。在决定要更改哪个副本时,将优先级赋予var2。 所以我需要如下所示的最终数据框:

var1  var2  var3  var4  var5
  23     1     0     0     0
  23     1     0     0     0
  43     0     1     1     1
  43     0     1     1     1

有什么建议吗? 谢谢

3 个答案:

答案 0 :(得分:1)

我认为这没有得到很好的解释,因为我的答案被降级了2 :)我希望您能原谅我,因为这是我的第一个代码,用于促进我在excel中应用但仍希望应用的一组规则的实现。自动化过程。 我会用其他方式解释。 基本上,我有一个tranacitons列表,而var1是一个事务ID。变量是我针对每笔交易做出的决定。 var2-拒绝,var3-正确; var4-接受; var5-接受并“做其他事情”。相同的交易必须做出相同的决定。碰巧,对于某些交易,决策是分开进行的,因此它们有不同的决策。我的目标是以相同的方式调整相同交易的决策。 关于决策,拒绝(var2)具有优先权。如果一个被拒绝,则另一个也必须被拒绝。 var2的优先级来自此处。 如果var1 = 1;其他= 0 关于其他变量。他们可能有一些非出色的人,例如。 var3 = 1; var4 = 1; var5 = 1;但在这种情况下var2 = 0(始终)。具有相同ID的交易具有相同的决定,这一点很重要。 希望对您有所帮助。

答案 1 :(得分:0)

如果我了解您的逻辑:

"%k0"

输出:

import pandas as np
df = pd.DataFrame({'var1': [23, 23, 43, 43],
                   'var2': [1, 0, 0, 0],
                   'var3': [0, 0, 0, 1],
                   'var4': [0, 0, 0, 1],
                   'var5': [0, 1, 1, 0]})
print(df)
df['var2'] = df.groupby(['var1'])['var2'].transform('max')
f = 1 - df['var2']
df['var3'], df['var4'],df['var5'] =[f]*3

print(df)

答案 2 :(得分:0)

我认为我做到了。也许它太长了,但是可以用:) 再次感谢Frenchy提出的“ groupby”建议!

model.compile(loss=['mse', 'binary_crossentropy'], loss_weights=[0.9, 0.1], optimizer=Adam())