可能是一个简单的问题,但我找不到简单的答案。例如,我们在数据帧df1中采用以下列状态:
**Status**
Planned
Unplanned
Missing
Corrected
我想在单元格包含,计划和丢失时计算行数。我尝试了以下方法:
test1 = df1['Status'].str.contains('Planned|Missing').value_counts()
列状态来自类型:object。我的代码行有什么问题?
答案 0 :(得分:6)
您可以使用布尔条件过滤df,然后调用len
:
In [155]:
len(df[df['Status'].str.contains('Planned|Missing')])
Out[155]:
2
或者使用True
中的索引value_counts
:
In [158]:
df['Status'].str.contains('Planned|Missing').value_counts()[True]
Out[158]:
2
答案 1 :(得分:0)
尝试以下操作:
df["Status"].value_counts()[['Planned','Missing']].sum()
答案 2 :(得分:0)
the offical docs与na=False
结合使用可确保您拥有布尔序列。还要注意,True
/ False
的作用类似于1
/ 0
的数值计算。您现在可以直接使用pd.Series.str.contains
:
count = df['Status'].str.contains('Planned|Missing', na=False).sum()
这避免了不必要和昂贵的数据帧索引操作。