Я в настоящее время экспериментирую с новой и все еще в разработке 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.
Почему это происходит? Есть ли обходной путь? Спасибо.