【问题标题】:Replacing Empty Cells with 0 - Python用 0 替换空单元格 - Python
【发布时间】:2021-10-29 19:51:02
【问题描述】:

我正在使用 Python - BeautifulSoup 和 Selenium抓取一个 COVID 数据集。数据框的某些列中有空单元格。但是,我无法将其转换为 0。

我已经用尽了堆栈溢出中的所有给定解决方案。我知道这是一个重复的问题,更像是一个愚蠢的问题,但我不知道如何解决这个问题。

这是代码:

def recode_empty_cells(dataframe, list_of_columns):

    for column in list_of_columns:
        dataframe[column] = dataframe[column].replace('\xa0',0)
        dataframe[column] = dataframe[column].replace(" ",0)
        dataframe[column] = dataframe[column].fillna(0)

    return dataframe
recode_empty_cells(df, df.columns)

【问题讨论】:

  • 您还应该提及 URL,您的抓取代码
  • 在不提供 url 或数据框的情况下,任何人都无法提供帮助/提供细节。

标签: python pandas dataframe web-scraping beautifulsoup


【解决方案1】:
dataframe.fillna(0, inplace=True)

应该有效

【讨论】:

  • 从技术上讲,是的。但正如@chitwon88 指出的那样,也许还有更多的空格导致了这种功能失效。
【解决方案2】:

数据中可能有超过 1 个空格。所以我要做的是首先.strip() 字符串,然后可以对'' 进行替换。

注意:我不知道您的数据是什么样的。这不考虑列中数据类型的任何混合。如果列中混合了字符串和整数,我们将需要调整此代码。另外,您确定要在所有列中填写0 吗?我假设某些列不是您拥有的数字。但是试试这个:

import pandas as pd
import numpy as np


df = pd.DataFrame({'column A':['A','B','C','D', 'E', 'F', 'G'],
                    'column B':['4','3',' ', ' 100', '   ', None, np.nan]})

print('Before: \n', df)


def recode_empty_cells(dataframe, list_of_columns):
    for column in list_of_columns:
        dataframe[column] = dataframe[column].str.strip()
        dataframe[column] = dataframe[column].fillna(0)
        dataframe[column] = dataframe[column].replace("",0)
        
    return dataframe

recode_empty_cells(df, df.columns)

print('\n\nAfter: \n', df)

输出:

Before: 
   column A column B
0        A        4
1        B        3
2        C         
3        D      100
4        E         
5        F     None
6        G      NaN
    

After: 
   column A column B
0        A        4
1        B        3
2        C        0
3        D      100
4        E        0
5        F        0
6        G        0

【讨论】:

  • 这非常有效!是的,只有数字列是空的,即当天为 0 个案例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 2013-12-10
  • 2017-03-31
  • 1970-01-01
相关资源
最近更新 更多