对于某些列,Pandas将非零值替换为1

2024-09-30 18:31:56 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的数据框df中,我有一些列(即2:11)采用值NaN或一些文本,如下所示。在

  >>> df.head(2)
              Yoga  Cardio_time     Legsfront Legsback    Ass Calf Back Biceps  \
  date                                                                           
  2016-01-15   0.0          3.0  Framsida lår      NaN  Rumpa  Vad  NaN    NaN   
  2001-01-01   0.0         40.0  Framsida lår      NaN    NaN  NaN  NaN    NaN   

              Chest Shoulders Triceps    Other  Muscles_time  Stretch_time Notes  
  date                                                                            
  2016-01-15    NaN       NaN     NaN  testing           NaN           NaN   NaN  
  2001-01-01  Bröst       NaN     NaN      NaN           NaN           NaN   NaN  

对于变量[Legsfront,…,Triceps],我想重新编码,以便将NaN值替换为零——这可以使用.fillna(0, inplace=True)来完成。我已经在下面的代码中这样做了。然后我想把非零重编码为1,但我做不到。我试过dfb[dfb != 0] = 1和{}。也许需要一个for循环?在

^{pr2}$

Tags: 数据文本编码dfdatetimenanhead
1条回答
网友
1楼 · 发布于 2024-09-30 18:31:56

我想您正在寻找^{}^{},而不是使用fillna使用:

ndf = df.notnull().astype(int)

样本输出:

^{pr2}$

在你的情况下,你能做到

binaryvars = ['Legsfront', 'Legsback', 'Ass', 'Calf', 'Back', 'Biceps', 'Chest', 'Shoulders', 'Triceps']
dfb = df[binaryvars].notnull().astype(int)

要更改主数据帧中的数据,可以使用

df[binaryvars] = df[binaryvars].notnull().astype(int)

相关问题 更多 >