我想swaplevel和设置值后,选择。
在本例中,我想将“c1”列设置为1,但它似乎没有像我预期的那样工作。
编辑:未明确表达:我想把C1列的值设为1,而不是重命名C1。
import numpy as np
import pandas as pd
mix = pd.MultiIndex.from_tuples([('a1','b1','c1'),('a1','b2','c1'),('a1','b3','c2')])
df = pd.DataFrame(np.zeros((3,3)),columns=mix)
print(df)
df.swaplevel(0,2,axis=1).loc[:,'c1']=1
print(df)
Output
a1
b1 b2 b3
c1 c1 c2
0 0.0 0.0 0.0
1 0.0 0.0 0.0
2 0.0 0.0 0.0
' FutureWarning: In a future version, `df.iloc[:, i] = newvals` will attempt \nto set the values inplace instead of always setting a new array. \nTo retain the old behavior, use either `df[df.columns[i]] = newvals` or, \nif columns are non-unique, `df.isetitem(i, newvals)`\n'
2条答案
按热度按时间7lrncoxx1#
不要弄乱你的索引,使用advanced indexing:
或者:
适当修改
df
:5fjcxozz2#
swaplevel
+assign
结果