如何使用pandas为与多部分索引

时间:2018-06-12 19:27:04

标签: python python-3.x pandas

我有以下pandas数据帧:

>>> import pandas
>>> indexes = [['a', 'a', 'c', 'd', 'd', '1'], ['1', '1', '3', '4', '5', '6']]
>>> pandas.DataFrame(index=indexes, columns=["Year", "Color", "Manufacturer"])
    Year Color Manufacturer
a 1  NaN   NaN          NaN
  1  NaN   NaN          NaN
c 3  NaN   NaN          NaN
d 4  NaN   NaN          NaN
  5  NaN   NaN          NaN
1 6  NaN   NaN          NaN

在第二个索引值为“1”的所有行中,我可以使用什么命令将“制造商”列设置为“Manf X”?我尝试过以下命令,但运气不好:

set_value((,'1'), "Manufacturer", "Manf X")
set_value((:,'1'), "Manufacturer", "Manf X")

看起来我可以使用类似的命令在所有第一个索引值为1的行中设置列,但是当我想要匹配第二个索引值时,我无法使其工作

set_value(('1',), "Manufacturer", "Manf X")

1 个答案:

答案 0 :(得分:2)

单向,使用slicers

B

在:

    Year Color Manufacturer
1 6  NaN   NaN          NaN
a 1  NaN   NaN          NaN
  1  NaN   NaN          NaN
c 3  NaN   NaN          NaN
d 4  NaN   NaN          NaN
  5  NaN   NaN          NaN

后:

    Year Color      Manufacturer
1 6  NaN   NaN               NaN
a 1  NaN   NaN  SomeManufacturer
  1  NaN   NaN  SomeManufacturer
c 3  NaN   NaN               NaN
d 4  NaN   NaN               NaN
  5  NaN   NaN               NaN

(对索引进行排序是必需的。没有排序:)

UnsortedIndexError: 'MultiIndex Slicing requires the index to be fully lexsorted tuple len (2), lexsort depth (0)'