如果在生成带有一些 bool 列的 Pandas 数据框后,我得到了列的适当数据类型。
>>> individuals = pandas.DataFrame([[True, 1],[False, 1]],
... columns = ["female","fitness"])
...
>>> print(individuals["female"])
0 True
1 False
Name: female, dtype: bool
但是当我通过复制一个已经存在的行来添加另一行时,这会中断:
>>> individuals.loc[2] = individuals.loc[1]
>>> print(individuals["female"])
0 True
1 False
2 False
Name: female, dtype: object
对于我的 “fitness”
专栏,我改为从 int64
切换到 float64
,这也不是最佳选择(但稍微好一些,因为至少 float64
仍然是数字数据类型,这是我后续代码偶然发现的)。有没有一种简单的方法可以避免这种情况,例如。通过使用不同的方法来复制行?
最佳答案
你应该使用.append
。用于有意扩展的 .loc
语法不会在多数据类型的情况下保留数据类型。这将在 0.15.0 中修复
In [18]: individuals.append(individuals.loc[1])
Out[18]:
female fitness
0 True 1
1 False 1
1 False 1
In [19]: individuals.append(individuals.loc[1]).dtypes
Out[19]:
female bool
fitness int64
dtype: object
关于python - 复制一行搞砸了 pandas 列数据类型,如何避免?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25670760/