我有一个在列上有多个索引的dataframe:
df = pd.DataFrame({('a', 'status'): [0.1, 0.2, 0.3],
('a', 'value'): [1.1, 1.2, 1.3],
('b', 'status'): [0.1, 0.2, 0.3],
('b', 'value'): [2.1, 2.2, 2.3],
('c', 'status'): [0.1, 0.2, 0.3]})
我的目标是将所有value
列乘以一个标量,或者将它们相加。我一直在努力寻找合适的表达式来使用直接索引或iloc
,但似乎找不到正确的。以下是一些失败的尝试:
>>> df[(None, 'value')] += 2
...
KeyError: 2
>>> df.iloc[:, (None, 'value')] += 2
...
IndexingError: Too many indexers
我想这是可能的,虽然不是很优雅,使列的掩码或索引,所以我尝试:
>>> df.columns.levels[1] == 'value'
array([False, True])
这对我所拥有的五个实际列没有帮助。
2条答案
按热度按时间brvekthn1#
您需要 * 切片机 *:
输出:
goqiplq22#
使用df.where()是一个选项:
输出: