Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 复制一行会搞乱一列数据类型,如何避免?_Python_Types_Pandas - Fatal编程技术网

Python 复制一行会搞乱一列数据类型,如何避免?

Python 复制一行会搞乱一列数据类型,如何避免?,python,types,pandas,Python,Types,Pandas,如果在生成带有一些布尔列的Pandas数据帧之后,我得到了相应的列数据类型 >>> individuals = pandas.DataFrame([[True, 1],[False, 1]], ... columns = ["female","fitness"]) ... >>> print(individuals["female"]) 0 True 1 False Name: female, dtype: 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
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

这是一个伪错误,因为它从未实现过(不过将在0.15.0中实现)