阻止Pandas由于在另一列中插入而将int转换为Float
问题描述
我有一个包含两列的DataFrame
:一列int
和一列str
。
- 我知道如果我将
NaN
插入int
列,Pandas会将所有int
转换为float
,因为int
没有NaN
值。 - 但是,当我将
None
插入str
列时,Pandas也会将我的所有int
转换为float
。这对我来说没有意义-为什么我在第2列中输入的值会影响第1列?
这里有一个简单的工作示例):
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
。我还需要逐行插入数据。
解决方案
如果设置dtype=object
,您的系列将能够包含任意数据类型:
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
相关文章