我有一个如下所示的多索引数据框:
count
year item
1922 foo 0
bar 0
1923 foo 0
bar 0
1924 foo 0
bar 0
我尝试通过使用 .get_level_values()
和 .xs()
对数据帧进行切片来设置多年和某些项目的值。例如:
lst = [1923, 1924]
df[df.index.get_level_values('year').isin(lst)].xs('foo', level=1).loc[:, 'count'] = 3
这不会引发任何错误,但值仍为 0:
In: df[df.index.get_level_values('year').isin(lst)].xs('foo', level=1)
Out:
count
year
1923 0
1924 0
如何更改数据帧这些切片中的值?
最佳答案
我认为只需要过滤:
lst = [1923, 1924]
m1 = df.index.get_level_values('year').isin(lst)
m2 = df.index.get_level_values('item') == 'foo'
df.loc[m1 & m2, 'count'] = 3
print (df)
count
year item
1922 foo 0
bar 0
1923 foo 3
bar 0
1924 foo 3
bar 0
关于python - 未使用 .xs() 和 .get_level_values() 在切片上设置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51541697/