我有以下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")
答案 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)'