Всякий раз, когда вы получаете данные из фрейма данных или добавляете данные в фрейм данных и вам необходимо сохранить тип данных таким же, избегайте преобразования в другие внутренние структуры, которые не знают о необходимых типах данных.
Когда вы делаетеdf.loc[0]
конвертируется в pd.Series
,
>>> type(df.loc[0])
<class 'pandas.core.series.Series'>
И теперь у Series
будет только один dtype
. Таким образом, приведение int
к float
.
Вместо этого сохраните структуру как pd.DataFrame
,
>>> type(df.loc[[0]])
<class 'pandas.core.frame.DataFrame'>
Выберите строку, необходимую в качестве кадра, и затем преобразуйте в dict
>>> df.loc[[0]].to_dict(orient='records')
[{'a': 1, 'b': 2.2}]
Аналогично, чтобы добавить новую строку, используйте функцию pandas pd.DataFrame.append
,
>>> df = df.append([{'a': 5, 'b': 4.4}]) # NOTE: To append as a row, use []
a b
0 1 2.2
0 5 4.4
Вышеприведенное не приведет к преобразованию типов,
>>> df.dtypes
a int64
b float64
dtype: object