Удаление слов DateTimeIndex из списка дат - PullRequest
0 голосов
/ 02 октября 2018

У меня есть несколько списков дат в кадре данных панд в этом формате:

col1                       col2
1                          [DatetimeIndex(['2018-10-01', '2018-10-02', 
                           '2018-10-03', '2018-10-04'],
                            dtype='datetime64[ns]', freq='D')

Я хотел бы снять слова DatetimeIndex и dtype='datetime64[ns]', freq='D' и превратить список в набор.Формат, который я бы искал: {'2018-10-01', '2018-10-02', '2018-10-03', '2018-10-04}

Ответы [ 2 ]

0 голосов
/ 02 октября 2018

Pandas не предназначен для хранения коллекций в пределах значений серий, поэтому вы просто не должны .Гораздо лучшая идея, особенно если у вас есть постоянное количество значений в каждом значении серии DatetimeIndex, - объединить дополнительные столбцы:

D = pd.DatetimeIndex(['2018-10-01', '2018-10-02', '2018-10-03', '2018-10-04'],
                     dtype='datetime64[ns]', freq='D')

df = pd.DataFrame({'col1': [1], 'col2': [D]})

df = df.join(pd.DataFrame(df.pop('col2').values.tolist()))

print(df)

   col1          0          1          2          3
0     1 2018-10-01 2018-10-02 2018-10-03 2018-10-04

Если вы действительно хотитеset в качестве значения каждой серии, вы можете сделать это через map + set:

df['col2'] = list(map(set, df['col2'].values))

print(df)

   col1                                               col2
0     1  {2018-10-01 00:00:00, 2018-10-02 00:00:00, 201...
0 голосов
/ 02 октября 2018

Вы пробовали:

set(index_object.tolist())

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

, если этоСтроки, которые вы хотите, вы можете изменить код следующим образом:

set(index_object.dt.strftime("%Y-%m-%d").tolist())

Для вашего конкретного формата (который я не обязательно одобряю!) вы можете попробовать это:

import itertools
string_lists = col2.apply(lambda x: x.dt.strftime("%Y-%m-%d").tolist())
unique_set = set(itertools.chain.from_iterable(string_lists.tolist()))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...