DataFrame.apply (func, raw = True), кажется, не вступает в силу? - PullRequest
0 голосов
/ 18 мая 2018

Я пытаюсь объединить только несколько столбцов моего фрейма данных df, поэтому я делаю

temp = df['field1', 'field2]
df["hash"] = temp.apply(lambda x: hash(x), raw=True, axis = 1)

Я установил для raw значение true, потому что документ (я использую 0.22) говорит, что он пройдетмассив numy вместо изменяемой серии https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.apply.html#pandas.DataFrame.apply но даже с raw = True я получаю серию?

  File "/nix/store/9ampki9dbq0imhhm7i27qkh56788cjpz-python3.6-pandas-0.22.0/lib/python3.6/site-packages/pandas/core/frame.py", line 4877, in apply
    ignore_failures=ignore_failures)
  File "/nix/store/9ampki9dbq0imhhm7i27qkh56788cjpz-python3.6-pandas-0.22.0/lib/python3.6/site-packages/pandas/core/frame.py", line 4973, in _apply_standard
    results[i] = func(v)
  File "/home/teto/mptcpanalyzer/mptcpanalyzer/data.py", line 190, in _hash_row
    return hash(x)
  File "/nix/store/9ampki9dbq0imhhm7i27qkh56788cjpz-python3.6-pandas-0.22.0/lib/python3.6/site-packages/pandas/core/generic.py", line 1045, in __hash__
    ' hashed'.format(self.__class__.__name__))
TypeError: ("'Series' objects are mutable, thus they cannot be hashed", 'occurred at index 1')

1 Ответ

0 голосов
/ 18 мая 2018

Это странно, так как я не могу воспроизвести вашу точную ошибку (то есть, я raw=True действительно приводит к пропуску np.ndarray).В любом случае, ни Series, ни np.ndarray не могут быть хэшируемыми.Следующие работы, однако:

temp.apply(lambda x: hash(tuple(x)), axis=1)

A tuple hashable.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...