Набор данных с максимальным количеством строк по указанному userId - PullRequest
2 голосов
/ 10 апреля 2020

У меня есть такой фрейм данных:

ID date        var1 var2 var3
AB 22/03/2020  0     1   3 
AB 29/03/2020  0     3   3 
CD 22/03/2020  0     1   1

И я хотел бы иметь новый набор данных, который, если это максимальный столбец (также могут быть связи), оставляет такое же количество исходного набора данных на рядах; в противном случае установите -1, если это не максимум. Таким образом, это будет:

ID date        var1   var2    var3
AB 22/03/2020  -1     -1        3 
AB 29/03/2020  -1      3        3 
CD 22/03/2020  -1      1        1

Но мне совсем не удается это сделать, и я тоже не могу найти это, я ценю любую помощь!

Ответы [ 2 ]

1 голос
/ 10 апреля 2020

Выберите только цифры c столбцы с помощью DataFrame.select_dtypes:

df1 = df.select_dtypes(np.number)

Или выберите все столбцы без первых двух по позициям на DataFrame.iloc:

df1 = df.iloc[:, 2:]

Или выберите столбцы с меткой var с помощью DataFrame.filter:

df1 = df1.filter(like='var')

, а затем установите новые значения с помощью DataFrame.where с max:

df[df1.columns] = df1.where(df1.eq(df1.max(1), axis=0), -1)
print (df)
   ID        date  var1  var2  var3
0  AB  22/03/2020    -1    -1     3
1  AB  29/03/2020    -1     3     3
2  CD  22/03/2020    -1     1     1
1 голос
/ 10 апреля 2020

IIU C использование where и дата back

s=df.loc[:,'var1':]
df.update(s.where(s.eq(s.max(1),axis=0),-1))
df
   ID        date  var1  var2  var3
0  AB  22/03/2020    -1    -1     3
1  AB  29/03/2020    -1     3     3
2  CD  22/03/2020    -1     1     1
...