Python 通过选择多索引df中的某些列,将NAN值转换为自定义值
我有一个多索引数据框,它看起来像是今年的某样东西(但有更多的年份值): 我希望能够将所有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
第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')