首页 > 解决方案 > Pandas DataFrame - df[df['SUMLEV'] == 50] 和 df.where(df['SUMLEV'] == 50) 有什么不同

问题描述

df[df['SUMLEV'] == 50]和有什么不同df.where(df['SUMLEV'] == 50)

标签: pythonpandasdataframe

解决方案


df[df['SUMLEV'].eq(50)]返回原始 DataFrame 的子集;您的条件所在的行True

df.where(df['SUMLEV'].eq(50))返回与原始形状相同的 DataFrame ;您的条件评估为的行FalseNaN排除在外。

import pandas as pd
df = pd.DataFrame({'foo': [1,2,3,4], 'SUMLEV': [10,50,50,70]})

df[df['SUMLEV'].eq(50)]
#   foo  SUMLEV
#1    2      50
#2    3      50

df.where(df['SUMLEV'].eq(50))
#   foo  SUMLEV
#0  NaN     NaN
#1  2.0    50.0
#2  3.0    50.0
#3  NaN     NaN

推荐阅读