微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐