Почему мое значение в pandas кадре данных превращается в dtype complex128, когда я получаю к нему доступ через .lo c? - PullRequest
1 голос
/ 16 января 2020

Мой DataFrame имеет комплекс 128 в одном столбце. Когда я получаю доступ к другому значению с помощью метода .lo c, он возвращает complex128 вместо сохраненного dtype. Я столкнулся с проблемой, когда использовал некоторые значения из DataFrame внутри класса в функции.

Вот минимальный пример:

import pandas as pd

arrays = [["f","i","c"],["float","int","complex"]]
ind = pd.MultiIndex.from_arrays(arrays,names=("varname","intended dtype"))
a = pd.DataFrame(columns=ind)

m1 = 1.33+1e-9j
parms1 = [1.,2,None]

a.loc["aa"] = parms1
a.loc["aa","c"] = m1

print(a.dtypes)
print(a.loc["aa","f"])
print("-----------------------------")
print(a.loc["aa",("f","float")])
print("-----------------------------")
print(a["f"])

Если убрать MultiIndex, этого не произойдет. Так что это, кажется, оказывает некоторое влияние. Но также доступ к нему в MultiIndex-способе не помогает. Я заметил, что назначение dtype происходит, потому что я не указал ни один индекс при создании DataFrame. Это необходимо, потому что я не знаю, что нужно заполнять в начале.

Это нормальное поведение или я могу от него избавиться?

pandas версия: 0.24.2 воспроизводится в 0.25.3

...