从pandas数据框中删除空行

4

我正在使用这个数据集,并通过pandas dataframe读取它。我只需要处理paperAbsrtract列,但其中有一些缺失的数据。

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

由于在摘要数据框中存在一些缺失的数据,我想删除这些空行。所以根据文档,我执行以下操作

abstract.dropna(how='all')

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

2
dropna 只会识别 pandas 认为为空的值。如果你指的是空字符串,那不算。你能展示一些数据吗?最好从 df.head().to_dict() 开始。 - ALollz
@ALollz 是的,你说得对。实际上是一个空字符串。那么我该如何解决它,而不需要手动解析字典呢? - nad
2
你需要先将空字符串替换为 NaN,即 abstract.replace('', np.NaN).dropna(how='all')。或者,你可以检查所有等于 '' 的位置,但我不确定你是否有一个 DataFrame 或序列,并且在哪个轴上进行操作。 - ALollz
1
@ALollz 谢谢,这解决了问题。如果你将其提交为答案,我可以接受它。 - nad
这个回答解决了你的问题吗?从pandas DataFrame中删除包含空单元格的行 - Gonçalo Peres
1个回答

4
你错过了inplace参数,将它设置为True或将该函数的结果分配给你的数据框。
# 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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接