如果在生成带有一些布尔列的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
s仍然是一个数字数据类型,这是我随后的代码遇到的问题)。有没有一种简单的方法可以避免这种情况,例如使用不同的方法复制行? 最佳答案
您应该使用.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