在pandas系列中使用元组作为索引

时间:2017-10-28 03:21:49

标签: python pandas

我的任务非常简单。基本上,我想创建一个pandas系列并使用元组值作为索引。例如,

// loop function
function testloop() {
    let finished = false;

    function loop () {
        if (!finished) {
            console.log('checkpoint 1'); // checkpoint
            scrape('https://www.google.com/', (sometext) => {
                console.log('checkpoint 4', sometext); // checkpoint
                finished = true;
            });
            setTimeout(loop, 0);
        }
    }
    loop();
}

我想要做的是,我想在pd.Series中再创建一行,其索引为(0,'a'),其值为1.

以上代码出错:

series_tmp = pd.Series()
series_tmp[(0,'a')] = 1

任何帮助?

我知道多索引,但它无法帮助我的情况。因为我需要有非常复杂的元组,如('a',(2,'c'),'d')作为键。

结论:感谢所有精彩的答案!要添加一个以元组作为索引的行,我们应该这样做:

KeyError: '[0 1] not in index'

3 个答案:

答案 0 :(得分:2)

如果要从数据创建具有多索引的系列对象,则可以通过构造以元组为键,数据为值的字典来实现。然后将其传递给系列构造函数。

Animal.where(species: 'dog').or(Animal.where(species: 'cat'))

根据评论进行编辑:

对于这种情况,需要显式元组的索引。在这种情况下,您可以提前构造索引,然后在构造系列时将其用作import pandas as pd d = {(0,'a'):1, (0,'b'):1.5, (1,'a'):3, (1,'b'):3.5} s = pd.Series(d) s # returns: 0 a 1.0 b 1.5 1 a 3.0 b 3.5 dtype: float64 参数。

index

答案 1 :(得分:1)

试试这样:

df = pd.DataFrame(columns=['a', 'b'], index=pd.MultiIndex.from_tuples([('0', 'a'), ('1', 'b')]))

print(df)

输出:

       a    b
0 a  NaN  NaN
1 b  NaN  NaN

答案 2 :(得分:1)

In :series_tmp = pd.Series([5,6],index=[(0,'a'),(1,'b')])
    series_tmp
Out:(0, a)    5
    (1, b)    6
    dtype: int64