Укажите, как работать как «другое» в работе (Python) [дублировать]

Мы также можем использовать dplyr.

Во-первых, некоторые данные:

df <- data.frame(x = rep(1:6, rep(c(1, 2, 3), 2)), year = 1993:2004, month = c(1, 1:11))

Теперь число:

library(dplyr)
count(df, year, month)
#piping
df %>% count(year, month)

Мы также можем используйте немного более длинную версию с трубкой и функцию n():

df %>% 
  group_by(year, month) %>%
  summarise(number = n())

или функцию `tally:

df %>% 
  group_by(year, month) %>%
  tally()
4
задан user1187139 3 February 2012 в 11:59
поделиться

2 ответа

__radd__ вызывается только в том случае, если у левого объекта нет метода __add__, или этот метод не знает, как добавить два объекта (которые он помещает, возвращая NotImplemented). Оба класса имеют метод __add__, который не возвращает NotImplemented. Поэтому метод __radd__ никогда не будет вызван.

14
ответ дан Mikhail 21 August 2018 в 13:36
поделиться
  • 1
    Ах, NotImplemented, это была именно та функциональность, которую я искал. Ницца – user1187139 4 February 2012 в 04:36

Эти функции __radd__ вызывается только в том случае, если левый операнд не поддерживает соответствующую операцию, а операнды имеют разные типы. Например,

class X:
  def __init__(self, num):
    self.num = num

class Y:
  def __init__(self, num):
    self.num = num

  def __radd__(self, other_obj):
    return Y(self.num+other_obj.num)

  def __str__(self):
    return str(self.num)

>>> x = X(2)
>>> y = Y(3)
>>> print(x+y)
5
>>>
>>> print(y+x)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-60-9d7469decd6e> in <module>()
----> 1 print(y+x)

TypeError: unsupported operand type(s) for +: 'Y' and 'X'
2
ответ дан Adil Abbasi 21 August 2018 в 13:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: