当我通过.loc访问pandas数据帧时,为什么数据帧中的值变为dtype complex128?

2024-04-20 12:34:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我的数据帧在一列中包含一个complex128。当我通过.loc方法访问另一个值时,它返回一个complex128,而不是存储的数据类型。 当我在函数的类中使用数据帧中的一些值时,遇到了这个问题

下面是一个简单的例子:

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"])

如果删除多索引,则不会发生这种情况。所以它似乎有一些影响。但是,以多索引方式访问它也无济于事。 我注意到发生了数据类型分配,因为我在数据帧创建中没有指定任何索引。这是必要的,因为一开始我不知道该填什么

这是正常行为还是我可以摆脱它

熊猫版本为:0.24.2 可在0.25.3中重现


Tags: 数据方法函数floatloc例子aapd