【发布时间】:2017-07-23 20:18:50
【问题描述】:
我想更改我的 pandas 数据框中的一个值,但我想我误解了索引的工作原理。
import pandas as pd
idx = pd.IndexSlice
df.loc[idx[(0, 2006.0, '01019_13055_01073_01009_01055')],idx[('moment_25','P517')]]
我得到了输出
Out[376]:
moment_25 P517 0.665873
Name: (0, 2006.0, 01019_13055_01073_01009_01055), dtype: float64
我想将 df 中的值 0.665873 更改为 1。我试过了
df.ix[idx[(0, 2006.0,'01019_13055_01073_01009_01055')],idx[('moment_25','P517')]]=1
但我得到了错误
Exception: cannot handle a non-unique multi-index!
我试图用示例数据框复制问题,但无济于事。
arrays = [['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux'],['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two']]
tuples = list(zip(*arrays))
index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second'])
df = pd.DataFrame(np.random.randn(3, 8), index=['A', 'B', 'C'], columns=index)
df.loc[idx['A'],idx[('baz','one')]]
Out[391]: -0.17935592549360641
我认为问题在于,当我使用实际数据时,我的输出得到了一个系列,但是当我使用练习数据时,我得到了一个浮点数。为什么我得到的是那个系列而不是浮点数 0.665873?
【问题讨论】:
-
发布您的数据框样本?
标签: python pandas dataframe multi-index