Pandas:向仅包含 1 行的 DataFrame 添加 MultiIndex

jim*_*iat 4 python pandas

我有一个小数据框,如下所示:

在此输入图像描述

和一个元组,例如:(Timestamp('2009-02-27 09:45:00'), 'bloomberg', 'Chicago PMI')

我想在 DataFrame 上创建一个多重索引,以便它读取如下内容:

在此输入图像描述

当尝试构造 MultiIndex 时:
MI=pd.MultiIndex(index, (0,0,0))
我遇到以下错误:
TypeError: Index(...) must be called with a collection of some kind, Timestamp('2009-02-27 09:45:00') was passed
这似乎意味着不允许有一个带有 MultiIndex 的 1 行 DataFrame?

我正在迭代 mysql 数据库来检索那些 1 行 DataFrame,然后将它们连接起来。尝试使用keysconcat 命令中的参数会产生另一组问题,因此希望可以使用 MultiIndex 创建此 1 行 DataFrame

下面是重建数据框的数据:
import pandas as pd from pandas import Timestamp dikt={'actual': {0: '34.2'}, 'previous': {0: '33.3'}, 'forecast': {0: '33.0'}, 'importance': {0: 81.300799999999995}} pd.DataFrame(dikt, columns=['actual', 'forecast', 'previous', 'importance'])

piR*_*red 5

设置

df = pd.DataFrame(
    [[34.2, 33., 33.3, 81.3008]],
    columns=['actual', 'forecast', 'previous', 'importance'])

tup = (pd.Timestamp('2009-02-27 09:45:00'), 'bloomberg', 'Chicago PMI')
Run Code Online (Sandbox Code Playgroud)

pd.MultiIndex用对象重新分配索引

df.index = pd.MultiIndex.from_tuples([tup])
df
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

使用列表列表重新分配索引

df.index = [[i] for i in tup]
df
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

使用这是完全可怕的方式rename
,这很糟糕,因为它TUPLE为每一行分配了相同的值

df.rename(index=lambda x: tup)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述