Тип данных Несоответствие - PullRequest
0 голосов
/ 13 марта 2019

У меня есть кадр данных, как показано ниже:

id, dt,                value
id1,2018-08-02 09:19:37, 2
id1,2018-08-02 09:19:47, 3
id1,2018-08-02 09:19:57, 6
......
id1,2018-08-03 04:49:27, 2
id1,2018-08-03 04:49:37, 4
id1,2018-08-03 04:49:47, 5

1) с print(type(df)) показывает, что это pandas.core.frame.DataFrame

2) с print("df.dtypes =",df.dtypes),Я получаю:

id                object
dt        datetime64[ns]
value              int32

3) Затем я делаю следующее:

   df.value = df.value.astype(float)
   df.time = pd.to_datetime(df.dt)
   sub_df = df[["dt", "value"]]

   print("type(sub_df) ", type(sub_df))
  `print("sub_df.dtypes", sub_df.dtypes)`, 

Получаю

<class 'pandas.core.frame.DataFrame'>

dt       datetime64[ns]
value           float64
dtype: object

4) Затем

df_grouped_by_day = df.groupby(sub_df.dt.dt.date).value.mean()
print("type(df_grouped_by_day) ",type(df_grouped_by_day))
print("df_grouped_by_day ", df_grouped_by_day.dtypes)

получить

<class 'pandas.core.series.Series'>

float64

5) Наконец, я делаю

df_grouped_by_day["value"] = df_grouped_by_day["value"].astype(float) - df_grouped_by_day["value"].astype(float).shift(1)

Здесь я получил ошибку TypeError: 'str' object cannot be interpreted as an integer

Пожалуйста, не могли бы вы помочь, где я делаюнеправильно?Большое спасибо.

1 Ответ

0 голосов
/ 13 марта 2019

Я решил вышеуказанную проблему, добавив следующее перед разграничением:

new_df = df_grouped_by_day.to_frame()  
new_df["value"] = new_df["value"].astype(float) - new_df["value"].astype(float).shift(1)

Большое спасибо всем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...