Я использую pandas 0.17.0 и у меня есть df
, похожий на этот:
df.head()
Out[339]:
A B C
DATE_TIME
2016-10-08 13:57:00 in 5.61 1
2016-10-08 14:02:00 in 8.05 1
2016-10-08 14:07:00 in 7.92 0
2016-10-08 14:12:00 in 7.98 0
2016-10-08 14:17:00 out 8.18 0
df.tail()
Out[340]:
A B C
DATE_TIME
2016-11-08 13:42:00 in 8.00 0
2016-11-08 13:47:00 in 7.99 0
2016-11-08 13:52:00 out 7.97 0
2016-11-08 13:57:00 in 8.14 1
2016-11-08 14:02:00 in 8.16 1
со следующими dtypes
:
print (df.dtypes)
A object
B float64
C int64
dtype: object
Когда я переиндексирую свои df
минутные интервалы, все столбцы int64
изменятся на float64
.
index = pd.date_range(df.index[0], df.index[-1], freq="min")
df2 = df.reindex(index)
print (df2.dtypes)
A object
B float64
C float64
dtype: object
Кроме того, если я попытаюсь изменить выборку
df3 = df.resample('Min')
int64
превратится в float64
, и по какой-то причине я потеряю свой столбец object
.
print (df3.dtypes)
print (df3.dtypes)
B float64
C float64
dtype: object
Поскольку я хочу по-разному интерполировать столбцы на основе этого различия на последующем шаге (после объединения df
с другим df
), мне нужно, чтобы они сохраняли исходное dtype
. В моем реальном df
столбцов каждого типа гораздо больше, поэтому я ищу решение, которое не зависит от вызова столбцов по отдельности по их метке.
Есть ли способ сохранить их dtype
во время переиндексации? Или есть способ, как я могу впоследствии присвоить им их dtype
(это единственные столбцы, состоящие только из целых чисел, помимо NAN)? Кто-нибудь может мне помочь?