我的数据框有4列。我想计算其中值'\ N'出现的行数。整个数据框的列都具有dtype:objects。在下面的示例中,计数为1(其中\ N出现在1行)。
这是无效的代码:
len(filter(lambda df: r'\N' in str(df.episode), rows))
Output Error: NameError: name 'rows' is not defined
我将如何定义行?我不确定它指的是什么。
答案 0 :(得分:1)
请您尝试以下。
首先导入numpy
和pandas
库。
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
要计算符合此条件的行数,可以使用.shape
或len()
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
,在这种情况下,只有一个反斜杠将用作转义符,因此我们需要在需要时添加第二个反斜杠完全匹配。