我有一个非常简单的任务。本质上,我想创建一个熊猫系列并使用元组值作为索引。例如,
series_tmp = pd.Series()
series_tmp[(0,'a')] = 1
Run Code Online (Sandbox Code Playgroud)
我想要做的是,我想在 pd.Series 中再创建一行,其索引为 (0,'a'),值为 1。
上面的代码得到错误:
KeyError: '[0 1] not in index'
Run Code Online (Sandbox Code Playgroud)
有什么帮助吗?
我知道多索引,但它对我的情况无济于事。因为我需要像 ('a',(2,'c'),'d') 这样非常复杂的元组作为键。
结论:感谢所有精彩的答案!要添加以元组为索引的行,我们应该这样做:
series_tmp = series_tmp.append(pd.Series([1],index=[(0,'a')]))
Run Code Online (Sandbox Code Playgroud)
如果要根据数据创建具有多索引的系列对象,可以通过构造一个以元组为键、以数据为值的字典来实现。然后将其传递给系列构造函数。
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
Run Code Online (Sandbox Code Playgroud)
对于这种情况,需要显式元组的索引。在这种情况下,您可以提前构建索引,然后index在构建系列时将其用作参数。
ix = pd.Index([(1,'a'), ('a',(2,'b')), (2,('b',1))])
s = pd.Series(data=[1,5,9], index=ix)
s
# returns:
(1, a) 1
(a, (2, b)) 5
(2, (b, 1)) 9
dtype: int64
# check indexing into the series object
s[('a',(2,'b'))]
# returns:
5
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4537 次 |
| 最近记录: |