проблема с функцией apply в `pint-pandas` - PullRequest
0 голосов
/ 13 октября 2019

Я в настоящее время экспериментирую с новой и все еще в разработке pint-pandas библиотекой.

Я пытаюсь установить несколько столбцов одновременно, используя функцию pandas apply()где столбцы PintArray с. Вот минимальный рабочий пример:

import pandas as pd
import pint
ureg = pint.UnitRegistry()
pint.PintType.ureg = ureg

def f(x):
    return x+1*ureg.day, x+2*ureg.day

def g(x):
    return x+1, x+2

print('First try/except block')
try:
    df1 = pd.DataFrame({'A':pd.Series([1,2,3,4], dtype='pint[day]'),'B':pd.Series([5,6,7,8], dtype='pint[day]')})
    df1['C'], df1['D'] = zip(*df1['A'].apply(f))
except Exception as e:
    print(e)

print('Second try/except block')
try:
    df2 = pd.DataFrame({'A':pd.Series([1,2,3,4]),'B':pd.Series([5,6,7,8])})
    df2['C'], df2['D'] = zip(*df2['A'].apply(g))
except Exception as e:
    print(e)

Во втором блоке try / кроме исключений не выдается исключение, которое подразумевает, что метод работает с чистым pandas. Первая попытка / исключение блока вызывает следующее исключение:

setting an array element with a sequence.

Почему это происходит? Есть ли обходной путь? Спасибо.

...