Если мы инициализируем pandas.DataFrame
, где типом будет int64
:
import numpy as np
import pandas as pd
df1 = pd.DataFrame(np.arange(4).reshape((2,2)), columns=['one','two'])
, а затем приведем тип первого столбца к np.str
и посмотрим на вторую строку:
(1)
df2 = df1.astype({'one':np.str})
df2.loc[1,]
df2.loc[1,]
возвращает pandas.Series с типом object
, с сохранением типов элементов.
Однако, если мы приведем тип ко второму первому столбцубыть np.float
(2)
df3 = df1.astype({'one':np.float})
df3.loc[1,]
df3.loc[1,]
возвращает pandas.Series с типом float64
, то есть int64 в столбце 'two'
был повышен до float64
.
Есть ли способ обеспечить, чтобы df.loc
всегда сохранял тип, как в (1), избегать поведения в (2)?
(И зачем мне это? Потому что можно передавать целые числакак индексы, поплавки не могут, и меня немного раздражает необходимость переделывать объекты, потому что pandas решил, что то, что я хотел получить как возвращаемое значение, не то, что я изначально поместил в свой фрейм данных)