【问题标题】:Removing an empty row from pandas dataframe从熊猫数据框中删除一个空行
【发布时间】:2022-02-03 04:52:04
【问题描述】:

我正在使用 this dataset 并通过 pandas 数据框读取它。我只需要处理有一些缺失数据的paperAbsrtract 列。

filename = "sample-S2-records"
df = pd.read_json(filename, lines=True) 
abstract = df['paperAbstract']

因为abstract 数据框中缺少一些数据,我想删除那些为空的行。所以跟着documentation,我在下面做

abstract.dropna(how='all')

但这不会删除那些空行。它们仍然存在于abstract 数据框中。我错过了什么?

【问题讨论】:

  • 我们将 dropna 只识别 pandas 认为 null 的值。如果空你的意思是空字符串,那不算数。你能展示一些你的数据吗,最好来自df.head().to_dict()
  • @ALollz 是的,你是对的。它实际上是空字符串。那么如何在不手动解析字典的情况下解决它。
  • 您需要先将空字符串替换为NaNabstract.replace('', np.NaN).dropna(how='all')。或者,您可以检查所有内容都等于'',但我不确定您是否有DataFrame 或系列,以及您希望在哪个轴上完成。
  • @ALollz 谢谢这解决了这个问题。如果您将其作为答案提交,我可以接受。

标签: python pandas dataframe


【解决方案1】:

通过将inplace 参数设置为True 或将此函数的结果分配给您的数据框,您将丢失inplace 参数。

# Solution 1: inplace = True:

abstract.dropna(how='all', inplace = True) 
# do operation inplace your dataframe and return None.

# Solution 2: assign the function result to your own dataframe:

abstract = abstract.dropna(how='all') 
# don't do operation inplace and return a dataframe as a result. 
# Hence this result must be assigned to your dataframe

注意:inplace 默认值为False

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-15
    • 1970-01-01
    • 2019-05-01
    • 2016-04-30
    • 1970-01-01
    • 1970-01-01
    • 2020-03-23
    • 2021-11-03
    相关资源
    最近更新 更多