Stop Pandas from converting int to float(阻止 Pandas 将 int 转换为 float)
问题描述
我有一个 DataFrame.以下是两个相关的列:一个是 int 的列,另一个是 str 的列.
I have a DataFrame. Two relevant columns are the following: one is a column of int and another is a column of str.
我知道如果我将 NaN 插入 int 列,Pandas 会将所有 int 转换为 float 因为 int 没有 NaN 值.
I understand that if I insert NaN into the int column, Pandas will convert all the int into float because there is no NaN value for an int.
但是,当我将 None 插入 str 列时,Pandas 会将我的所有 int 转换为 float 为好.这对我来说没有意义 - 为什么我在第 2 列中输入的值会影响第 1 列?
However, when I insert None into the str column, Pandas converts all my int to float as well. This doesn't make sense to me - why does the value I put in column 2 affect column 1?
这是一个简单的工作示例(Python 2):
Here's a simple working example (Python 2):
import pandas as pd
df = pd.DataFrame()
df["int"] = pd.Series([], dtype=int)
df["str"] = pd.Series([], dtype=str)
df.loc[0] = [0, "zero"]
print df
print
df.loc[1] = [1, None]
print df
输出是
int str
0 0 zero
int str
0 0.0 zero
1 1.0 NaN
有没有办法让输出如下:
Is there any way to make the output the following:
int str
0 0 zero
int str
0 0 zero
1 1 NaN
不将第一列重铸为 int.
我更喜欢使用
int而不是float因为实际数据在该列是整数.如果没有解决方法,我只会使用float.
I prefer using
intinstead offloatbecause the actual data in that column are integers. If there's not workaround, I'll just usefloatthough.
我不喜欢重铸,因为在我的实际代码中,我不需要
存储实际的dtype.
I prefer not having to recast because in my actual code, I don't
store the actual dtype.
我还需要逐行插入数据.
I also need the data inserted row-by-row.
推荐答案
如果你设置dtype=object,你的系列就可以包含任意数据类型:
If you set dtype=object, your series will be able to contain arbitrary data types:
df["int"] = pd.Series([], dtype=object)
df["str"] = pd.Series([], dtype=str)
df.loc[0] = [0, "zero"]
print(df)
print()
df.loc[1] = [1, None]
print(df)
int str
0 0 zero
1 NaN NaN
int str
0 0 zero
1 1 None
这篇关于阻止 Pandas 将 int 转换为 float的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:阻止 Pandas 将 int 转换为 float
基础教程推荐
- 用 Python 编写 Fortran 无格式文件 2022-01-01
- Discord.py 缺少必需的参数 2022-01-01
- 尝试制作WhatsApp机器人 2022-01-01
- pyserial - 可以从线程 a 写入串行端口,是否阻塞从线程 b 读取? 2022-01-01
- 与常规 dict 相比,Python manager.dict() 非常慢 2022-01-01
- numpy float:比算术运算中内置的慢 10 倍? 2022-01-01
- 在 Celery 工作人员中捕获 Heroku SIGTERM 以优雅地关 2022-01-01
- 将 x 轴刻度更改为自定义字符串 2022-01-01
- 由Python将MP3转换为MIDI(类型错误:无法加载插件:mtg-Melodia:Melodia) 2022-01-01
- 使用生成器和迭代器时 Python 多循环失败 2022-01-01
