У меня есть 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
. -
Мне также нужны данные, вставленные по строкам.