Pandas расплавить датафрейм в единицу времени и заполнить все значения NaN - PullRequest
2 голосов
/ 19 марта 2020

У меня есть кадр данных, включающий все страны и дату и время в диапазоне от «1/22/20» до «2/22/20».

Вот мой столбец данных, показанный ниже.

Country 1/22/20 1/23/20 1/24/20 1/25/20 1/26/20 1/27/20 1/28/20 1/29/20 1/30/20...

Я пытаюсь растопить фрейм данных, чтобы получить значения с точки зрения даты и времени, например

US 1/25/20 28

, но все значения определены как NaN

Australia   2020-01-22  NaN

Как это исправить?

Вот мой фрагмент кода

def meltDataFrame(df,id_vars,value_vars,var_name,value_name):
    return pd.melt(df,
        id_vars= id_vars,
        value_vars = value_vars,
        var_name= var_name,
        value_name= value_name)

data_df_melt = meltDataFrame(data_df.reset_index(),
        ['Country'],pd.date_range('1/22/20', '3/18/20', freq='D'),'Date','Total_Count')

1 Ответ

2 голосов
/ 19 марта 2020

Проблема в том, что имена столбцов не являются датами и временем.

Так что конвертируйте все имена столбцов без первого в даты:

df.columns = df.columns[:1].tolist() + pd.to_datetime(df.columns[1:]).tolist()

И затем плавьтесь.

Образец :

print (df)
     Country  1/22/20  1/23/20  1/24/20
0  Australia       11       42       53

df.columns = df.columns[:1].tolist() + pd.to_datetime(df.columns[1:]).tolist()
print (df)
     Country  2020-01-22 00:00:00  2020-01-23 00:00:00  2020-01-24 00:00:00
0  Australia                   11                   42                   53
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...