无法计算数据框中具有特殊字符的行

时间:2019-03-02 18:46:22

标签: python-3.x pandas dataframe

我的数据框有4列。我想计算其中值'\ N'出现的行数。整个数据框的列都具有dtype:objects。在下面的示例中,计数为1(其中\ N出现在1行)。

df.episode enter image description here

这是无效的代码:

len(filter(lambda df: r'\N' in str(df.episode), rows))

Output Error: NameError: name 'rows' is not defined

我将如何定义行?我不确定它指的是什么。

2 个答案:

答案 0 :(得分:1)

请您尝试以下。

首先导入numpypandas库。

import pandas as pd
import numpy as np

立即创建数据框,从OP的帖子中复制示例数据,然后运行以下命令以创建df。

df=pd.read_clipboard()

第一个解决方案:从@Jon Clements评论中汲取灵感,为\N计算行数。

df.eq(r'\N').any(1).sum()

第二个解决方案:对于您的第二个问题,将\N替换为NaN,请尝试以下操作。

df['seasonNumber']=np.where(df.seasonNumber=='\\N',np.nan,df.seasonNumber)
df

答案 1 :(得分:0)

您想通过查找包含我假设的字符\N的列来过滤行。

如果我查看您的DataFrame,可以执行以下操作以使匹配的行退回:

df[df.episodeNumber.str.contains(r'\\N') | df.seasonNumber.str.contains(r'\\N')]

    tconst      parentTconst    seasonNumber    episodeNumber
2   tt0042889   tt0989125       \N              \N

要计算符合此条件的行数,可以使用.shapelen()

df[df.episodeNumber.str.contains(r'\\N') | df.seasonNumber.str.contains(r'\\N')].shape

len(df[df.episodeNumber.str.contains(r'\\N') | df.seasonNumber.str.contains(r'\\N')])

#Output
(1, 4)
1

形状返回数据框的形状,在这种情况下(#行,#列)

注意 我在\之前添加了一个反斜杠\N,我们需要从字面上寻找\N,在这种情况下,只有一个反斜杠将用作转义符,因此我们需要在需要时添加第二个反斜杠完全匹配。