как использовать pandas .Series.at с pandas .MultiIndex - PullRequest
0 голосов
/ 25 февраля 2020

Как правильно использовать pandas.Series.at с pandas.MultiIndex или он не поддерживается?

import pandas as pd # pd.__version__ == '0.25.1'

d1 = pd.Series([10, 20, 30], index=[0,1,2])
print(d1.at[1]) # works

d2 = pd.Series([10, 20, 30], index=pd.MultiIndex.from_product([[0], [0,1,2]]))
print(d2.at[(0,1)])
# ValueError: At based indexing on an non-integer index can only have non-integer indexers

d3 = pd.Series([10, 20, 30],
    index=pd.MultiIndex.from_product([[pd.Timestamp('2020-02-24')], [0,1,2]]))
print(d3.at[('2020-02-24',1)])
print(d3.at[(pd.Timestamp('2020-02-24'),1)])
# TypeError: _get_value() got multiple values for argument 'takeable'

Вот распечатки вышеприведенных серий:

>>> print(d1)
0    10
1    20
2    30
dtype: int64
>>> print(d2)
0  0    10
   1    20
   2    30
dtype: int64
>>> print(d3)
2020-02-24  0    10
            1    20
            2    30
dtype: int64

Большое спасибо за вашу помощь!

1 Ответ

0 голосов
/ 25 февраля 2020

Мы можем использовать loc с IndexSlice

print(d2.loc[pd.IndexSlice[0,1]])
20
...