Как выбрать значение из столбца даты и сохранить его в матрице - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть файл Excel 8000 rows и 10 columns и дата в качестве индекса, как показано ниже

                col1 col2 col3 col4 col5  col6  col7  col8   col9   col10
    Date                                                                
    1996-03-01  0.0  6.3  3.6  9.4  86.0  34.0  34.3  17.5   NaN     NaN
    1996-03-02  0.0  5.3  1.1  8.5  95.0  48.0  34.5  20.8   NaN     NaN
            ...  ...  ...  ...   ...   ...   ...   ...   ...     ...
    2015-12-30  0.0  3.6  NaN  8.4  92.0  25.0  32.6  16.4   NaN     NaN
    2015-12-31  0.0  3.4  NaN  8.6  92.0  41.0  31.7  17.4   NaN     NaN

В приведенном выше наборе данных отсутствуют значения в col9 и col10.

Теперь моя задача состоит в том, чтобы там, где когда-либо присутствовали значения в col 9 и col 10, я хотел выбрать всю строку и сохранить ее в матрице, что я сделал, как показано ниже.

    col1 col2 col3 col4 col5 col6 col7 col8  col9   col10
    0.0  0.0  0.0  0.0  0.0  0.0  4.2  22.3  20.0  21.2  
    0.0  0.0  0.0  0.0  0.0  0.0  8.0  26.8  21.4  20.5 
    ...  ...  ...  ...   ...   ...   ...   ...   ...      
    0.0  0.0  6.0  3.5  8.9  9.8  7.5  25.6  22.4  27.6 

И еще одна проблема заключается в том, что я тоже хочу сохранить соответствующую дату. Как мне это сделать? Так как date - это отметка времени, а rest - все типы float. Я не могу вставить метку времени в определенный столбец строки матрицы.

1 Ответ

0 голосов
/ 09 апреля 2020

Когда вы говорите матрица в python, я предполагаю, что вы имеете в виду df. Если вы этого не сделаете и имеете в виду фактическую матрицу из numpy массивов, вы можете легко получить ее из df. Вместо того, чтобы копировать ваши значения из df, просто отбросьте необходимые строки и сохраните оставшиеся в новом df.

new_df = df.dropna(inplace=True,subset=["col9","col10"])  

Подмножество - это столбцы, которые вы хотите учесть при отбрасывании. ( вы также можете передать индекс / номер столбца в списке) ^ это сохранит ваши данные, включая даты в новом df с пропущенными строками.

Чтобы преобразовать эту матрицу new_df в numpy, вы можно легко загрузить его в словарь, используя:

DataFrame.to_dict(self, orient='dict', into=<class 'dict'>)[source] 

метод, а затем, из этого, загрузить numpy мат (ссылка: python продиктовать numpy структурированный массив )

ПРИМЕЧАНИЕ: если даты доставляют вам дополнительные хлопоты, то конвертируйте их в число с плавающей точкой в ​​самом new_df, используя:

def datetime_to_float(d):
    return d.timestamp()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...