python – 复制一行搞砸pandas列数据类型,如何避免?

如果在生成带有一些布尔列的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

对于我的“适应性”列,我改为从int64切换到float64,这也不是最优的(但稍微好一点,因为至少float64s仍然是数值数据类型,这是我后来的代码偶然发现的).有没有一种简单的方法来避免这种情况,例如.通过使用不同的方法来复制行?

解决方法:

你应该使用.append.用于有意扩展的.loc语法不会在多重类型的情况下保留dtypes.这将固定为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

相关文章

转载:一文讲述Pandas库的数据读取、数据获取、数据拼接、数...
Pandas是一个开源的第三方Python库,从Numpy和Matplotlib的基...
整体流程登录天池在线编程环境导入pandas和xrld操作EXCEL文件...
 一、numpy小结             二、pandas2.1为...
1、时间偏移DateOffset对象DateOffset类似于时间差Timedelta...
1、pandas内置样式空值高亮highlight_null最大最小值高亮背景...