阻止Pandas将整数转换为浮点数,因为在另一列中进行了插入。

20 浏览
0 Comments

阻止Pandas将整数转换为浮点数,因为在另一列中进行了插入。

我有一个包含两列的DataFrame:一列是int类型,一列是str类型。

我知道,如果我在int列中插入NaN,Pandas会将所有的int转换为float,因为int类型中没有NaN值。

然而,当我在str列中插入None时,Pandas也会将所有的int转换为float。这对我来说没有意义,为什么我在第二列中放入的值会影响第一列呢?

以下是一个简单的工作示例:

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。
  • 我还需要逐行插入数据。
0