Python 如何向Datetime多索引熊猫数据帧添加行
我将如何向此数据帧的顶部添加一行。这 是下载的数据。我不能在公式中使用特定的行索引 因为第一个日期时间标记一直在更改。我也不能使用 内部索引的特定标签,因为它可能是Datetime。有没有 如何概括这一点 我试过这个 但是,它只在数据帧的末尾添加一行。分类 没有帮助,因为我想我在这里处理的是两个级别的索引; 这就解释了为什么这一行会粘在框架的底部 最终结果应如下所示:Python 如何向Datetime多索引熊猫数据帧添加行,python,pandas,dataframe,append,multi-index,Python,Pandas,Dataframe,Append,Multi Index,我将如何向此数据帧的顶部添加一行。这 是下载的数据。我不能在公式中使用特定的行索引 因为第一个日期时间标记一直在更改。我也不能使用 内部索引的特定标签,因为它可能是Datetime。有没有 如何概括这一点 我试过这个 但是,它只在数据帧的末尾添加一行。分类 没有帮助,因为我想我在这里处理的是两个级别的索引; 这就解释了为什么这一行会粘在框架的底部 最终结果应如下所示: X是要添加的列表/数组中的元素 A B C D
X
是要添加的列表/数组中的元素
A B C D E
NEWROW X1 X2 X3 X4 X5
2006-04-28 00:00:00
A 69.62 69.62 6.518 65.09 69.62
B
C
2006-05-01 00:00:00
A 71.5 71.5 6.522 65.16 71.5
B
C
2006-05-02 00:00:00
A 72.34 72.34 6.669 66.55 72.34
B
C
对我来说,不使用多索引
:
因此,您可以使用littlehack
——首先使用第二级Stats
,然后使用参数append=True
:
df1 = df1.sort_index()
df1.loc[((df1.index.min()[0]) - dt.timedelta(minutes=5), 'SUM'),:] =
df1.loc[(slice(None), slice('price')),:].sum()
df1 = df1.reset_index('Stats')
df1 = df1.sort_index(axis=0).set_index('Stats', append=True)
print (df1)
A B C D E
Date Stats
2006-04-27 23:55:00 SUM 213.46 213.46 19.709 196.80 213.46
2006-04-28 00:00:00 price 69.62 69.62 6.518 65.09 69.62
std NaN NaN NaN NaN NaN
weight NaN NaN NaN NaN NaN
2006-05-01 00:00:00 price 71.50 71.50 6.522 65.16 71.50
std NaN NaN NaN NaN NaN
weight NaN NaN NaN NaN NaN
2006-05-02 00:00:00 price 72.34 72.34 6.669 66.55 72.34
std NaN NaN NaN NaN NaN
weight NaN NaN NaN NaN NaN
嘿,耶斯雷尔:),谢谢!但是,我得到了这样的结果:keyrerror:“多索引切片要求索引是完全lexsorted tuple len(2),lexsort depth(1)”请先尝试
sort\u index()
,我将其添加到解决方案中。您又这样做了!:)嗨,耶兹雷尔,我发了最后一个问题……你觉得你可以试一下吗?:)
A B C D E
2006-04-28 00:00:00
A 69.62 69.62 6.518 65.09 69.62
B
C
2006-05-01 00:00:00
A 71.5 71.5 6.522 65.16 71.5
B
C
2006-05-02 00:00:00
A 72.34 72.34 6.669 66.55 72.34
B
C
A B C D E
NEWROW X1 X2 X3 X4 X5
2006-04-28 00:00:00
A 69.62 69.62 6.518 65.09 69.62
B
C
2006-05-01 00:00:00
A 71.5 71.5 6.522 65.16 71.5
B
C
2006-05-02 00:00:00
A 72.34 72.34 6.669 66.55 72.34
B
C
df1 = df1.sort_index()
df1.loc[((df1.index.min()[0]) - dt.timedelta(minutes=5), 'SUM'),:] =
df1.loc[(slice(None), slice('price')),:].sum()
df1 = df1.reset_index('Stats')
df1 = df1.sort_index(axis=0).set_index('Stats', append=True)
print (df1)
A B C D E
Date Stats
2006-04-27 23:55:00 SUM 213.46 213.46 19.709 196.80 213.46
2006-04-28 00:00:00 price 69.62 69.62 6.518 65.09 69.62
std NaN NaN NaN NaN NaN
weight NaN NaN NaN NaN NaN
2006-05-01 00:00:00 price 71.50 71.50 6.522 65.16 71.50
std NaN NaN NaN NaN NaN
weight NaN NaN NaN NaN NaN
2006-05-02 00:00:00 price 72.34 72.34 6.669 66.55 72.34
std NaN NaN NaN NaN NaN
weight NaN NaN NaN NaN NaN