【发布时间】:2017-03-08 05:02:23
【问题描述】:
我有一个DataFrame。两个相关的列如下:一个是int 的列,另一个是str 的列。
我了解,如果我将NaN 插入int 列,Pandas 会将所有int 转换为float,因为int 没有NaN 值。
但是,当我将None 插入str 列时,Pandas 也会将我所有的int 转换为float。这对我来说没有意义 - 为什么我在第 2 列中输入的值会影响第 1 列?
这是一个简单的工作示例(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
有没有办法让输出如下:
int str
0 0 zero
int str
0 0 zero
1 1 NaN
不将第一列重铸为int。
我更喜欢使用
int而不是float,因为实际数据在 该列是整数。如果没有解决方法,我只会 不过使用float。我宁愿不必重铸,因为在我的实际代码中,我不需要
存储实际的dtype。我还需要逐行插入数据。
【问题讨论】:
-
这不仅适用于任何列值
None,而且适用于float。
标签: python pandas type-conversion type-inference