Как преобразовать многоиндексный указатель даты и времени в целое число? - PullRequest
1 голос
/ 02 октября 2019

У меня есть многоиндексированный фрейм данных (объект groupby) как результат groupby (по 'id' и 'date').

                x  y
id  date            
abc 3/1/1994  100  7
    9/1/1994   90  8
    3/1/1995   80  9
bka 5/1/1993   50  8
    7/1/1993   40  9 

Я хотел бы преобразовать эти даты в целое числокак, например,

             x  y
id  date            
abc day 0  100  7
    day 1   90  8
    day 2   80  9
bka day 0   50  8
    day 1   40  9 

Я думал, что это будет просто, но я не мог легко добраться туда. Есть ли простой способ поработать над этим?

Ответы [ 2 ]

1 голос
/ 02 октября 2019

Попробуйте это:

s = 'day ' + df.groupby(level=0).cumcount().astype(str)
df1 = df.set_index([s], append=True).droplevel(1)

             x  y
id
abc day 0  100  7
    day 1  90   8
    day 2  80   9
bka day 0  50   8
    day 1  40   9
1 голос
/ 02 октября 2019

Вы можете рассчитать новый уровень и создать новый индекс:

lvl1 = 'day ' +  df.groupby('id').cumcount().astype('str')
df.index = pd.MultiIndex.from_tuples((x,y) for x,y in zip(df.index.get_level_values('id'), lvl1) )

вывод:

             x  y
abc day 0  100  7
    day 1   90  8
    day 2   80  9
bka day 0   50  8
    day 1   40  9
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...