如何将多索引日期时间索引转换为整数?

时间:2019-10-02 19:11:56

标签: python-3.x pandas multi-index

由于groupby(按'id'和'date'),我有一个多索引数据框(groupby对象)。

                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 个答案:

答案 0 :(得分:1)

您可以计算新级别并创建新索引:

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

答案 1 :(得分:1)

尝试一下:

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