pandas multiindex中的设置值失败

时间:2015-04-14 12:19:57

标签: python pandas

我有一个mulitindexed数据框,我希望看到som值:

import pandas as pd
import itertools
a = pd.period_range('2013Q1','2013Q4', freq='Q')
i = (1111, 2222, 3333)
idx = pd.MultiIndex.from_tuples(list(itertools.product(a, i)),
                            names=('Periode', 'CVR'))
df = pd.DataFrame(index=idx,
              columns=('OMS', 'OMK','RES','DRIFT_IND','OEVRIG_IND','FIN_IND','VARE_UD','LOEN_UD','FIN_UD'))

使用它来访问值有效:

df.loc[('2013Q1',1111),'OMS']

然而这失败了:

df.loc[('2013Q1',1111),'OMS']=1

带有以下错误:

 ValueError: can only call with other PeriodIndex-ed objects

有谁知道问题是什么?

1 个答案:

答案 0 :(得分:2)

如果您明确使用Period对象而不是字符串,这适用于访问和分配:

In [9]: df.loc[(pd.Period('2013Q1'),1111),'OMS']
Out[9]: nan

In [10]: df.loc[(pd.Period('2013Q1'),1111),'OMS'] = 1

In [11]: df.loc[(pd.Period('2013Q1'),1111),'OMS']
Out[11]: 1

但我提出了一个问题:https://github.com/pydata/pandas/issues/9892