【发布时间】:2016-06-29 14:38:43
【问题描述】:
已经有几个关于 SO 的问题与此相关,最值得注意的是 this one,但是似乎没有一个答案对我有用,而且很多文档链接(尤其是关于 lexsorting)已损坏,所以我会问另一个。
我正在尝试做一些(看似)非常简单的事情。考虑以下 MultiIndexed Dataframe:
import pandas as pd; import random
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.concat([pd.Series(np.random.randn(8), index=index), pd.Series(np.random.randn(8), index=index)], axis=1)
现在我想将0 列中的所有值设置为one 类别中的观察值(例如np.NaN)。我失败了:
df.loc(axis=0)[:, "one"][0] = 1 # setting with copy warning
和
df.loc(axis=0)[:, "one", 0] = 1
这会产生一个关于键长度超过索引长度的警告,或者一个关于缺乏足够深度的 lexsorting 的警告。
这样做的正确方法是什么?
【问题讨论】:
标签: python pandas multi-index