我有一个如下所示的MultiIndex数据框:
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
如何更改数据框这些切片中的值?
答案 0 :(得分:2)
我认为只需要过滤:
@vue/cli-init
答案 1 :(得分:1)
我相信您可以做到:
df.loc[(1923, 'foo'), 'count'] = 3
答案 2 :(得分:0)
您也可以使用product
和loc
a = itertools.product(lst, ['foo'])
df.loc[a, 'count'] = 3
问题
df[df.index.get_level_values('year').isin(lst)].xs('foo', level=1).loc[:, 'count'] = 3
是您要更改从df[df.index.get_level_values('year').isin(lst)]
返回的副本