Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过选择多索引df中的某些列,将NAN值转换为自定义值_Python_Pandas - Fatal编程技术网

Python 通过选择多索引df中的某些列,将NAN值转换为自定义值

Python 通过选择多索引df中的某些列,将NAN值转换为自定义值,python,pandas,Python,Pandas,我有一个多索引数据框,它看起来像是今年的某样东西(但有更多的年份值): 我希望能够将所有NAN值从第13周更改为第16周(而不是第17周)的“获胜者” 我正在尝试各种方法,但没有一种变化是永久的 #impermanent df.isnull()["week_13" : 'week_17'] =1 df.loc[df.isnull()]["week_13" : 'week_17'] =1 我应该如何将Nan(第13周和第14周)转换为“获胜者” 标准方法是对要替换其空值的特定列使用df.fill

我有一个多索引数据框,它看起来像是今年的某样东西(但有更多的年份值):

我希望能够将所有NAN值从
第13周
更改为
第16周
(而不是第17周)的“获胜者”

我正在尝试各种方法,但没有一种变化是永久的

#impermanent
df.isnull()["week_13" : 'week_17'] =1
df.loc[df.isnull()]["week_13" : 'week_17'] =1

我应该如何将Nan(第13周和第14周)转换为“获胜者”

标准方法是对要替换其空值的特定列使用
df.fillna('winner')
。这应该起作用:

cols = [f'week_{x}' for x in range(14, 17)]
df.loc[:, cols] = df.loc[:, cols].fillna('winner')
或者,要填充除最右边(最后一列)之外的每一列,请执行以下操作:


规范的方法是对要替换其空值的特定列使用
df.fillna('winner')
。这应该起作用:

cols = [f'week_{x}' for x in range(14, 17)]
df.loc[:, cols] = df.loc[:, cols].fillna('winner')
或者,要填充除最右边(最后一列)之外的每一列,请执行以下操作:


这似乎奏效了。关于您的代码,还有一个问题:如果我想找到空值的索引,我想这会有用:
df[df.iloc[:,:-1].isnull()].index.tolist()
,因为我使用布尔索引来提取数据帧的子集。但是,它返回所有索引。这似乎是可行的。关于您的代码,还有一个问题:如果我想找到空值的索引,我想这会有用:
df[df.iloc[:,:-1].isnull()].index.tolist()
,因为我使用布尔索引来提取数据帧的子集。但是,它返回所有索引。
df.iloc[:, :-1] = df.iloc[:, :-1].fillna('winner')