【问题标题】:How can I set nulls in my pandas dataframe column with a different value如何在我的 pandas 数据框列中设置具有不同值的空值
【发布时间】:2021-01-19 01:24:34
【问题描述】:

我正在尝试将我的数据框中的一些空值设置为不同的值:'Non-étiquettés'

page_data_fr['Lookup_FR_tag'].loc[page_data_fr['Lookup_FR_tag'].isnull()] = page_data_fr['Lookup_FR_tag'].loc[page_data_fr['Lookup_FR_tag'].isnull()].apply(lambda x: ['Non-étiquettés'])

但是,使用上述方法设置值会导致以下警告:

试图在数据帧的切片副本上设置值

请参阅文档中的注意事项:https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy

阅读文档并尝试调整我的代码后,我尝试了这个...

dfc = page_data_fr.copy() 

mask = dfc['Lookup_FR_tag'].loc[page_data_fr['Lookup_FR_tag'].isnull()]

dfc['Lookup_FR_tag'].loc[mask, 'Lookup_FR_tag'] = 'Non-étiquettés'

这仍然会产生另一个错误:

ValueError: 无法使用包含 NA / NaN 值的非布尔数组进行屏蔽 dfc['Lookup_FR_tag'].loc[page_data_fr['Lookup_FR_tag'].isnull()]

我也试过这样做,还是不行:

arrOfNulls = []
counter = 0
for x in dfc['Lookup_FR_tag'].isnull():
   if x == True:
      arrOfNulls.append(counter)
      counter += 1
counter += 1

for x in range(len(arrOfNulls)):
    page_data_fr['Lookup_FR_tag'][arrOfNulls[x]] = ['Non-étiquettés']

任何帮助将不胜感激,我不确定我做错了什么或者我是否接近..

【问题讨论】:

标签: python pandas


【解决方案1】:

你可以这样做:

 import numpy as np
 
 page_data_fr['Lookup_FR_tag'].replace(np.nan,"Non-étiquettés")

【讨论】:

  • 不幸的是,这不起作用或改变了我的任何价值观
  • 您需要将 np.nan 替换为您的缺失值所采用的形式。比如你的缺失值用0编码,你必须写.replace(0,"Non-étiquettés")
  • 我做到了,我试过这个>>> page_data_fr['Lookup_FR_tag'] = page_data_fr['Lookup_FR_tag'].replace(np.nan,"Non-étiquettés") >>> page_data_fr['Lookup_FR_tag'][22] 'Non-étiquettés' 它有效,但是它用字符串替换它们,我需要用包含字符串的数组替换,我试试这个:page_data_fr['Lookup_FR_tag']= page_data_fr['Lookup_FR_tag'].replace(np.nan,['Non-étiquettés']) TypeError: Invalid "to_replace" type: 'float'
猜你喜欢
  • 2016-10-24
  • 2016-08-31
  • 1970-01-01
  • 2021-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多