只是对“where”的行为以及为什么要使用它而不是“loc”感到好奇。
如果我创建一个数据框:
df = pd.DataFrame({'ID':[1,2,3,4,5,6,7,8,9,10],
'Run Distance':[234,35,77,787,243,5435,775,123,355,123],
'Goals':[12,23,56,7,8,0,4,2,1,34],
'Gender':['m','m','m','f','f','m','f','m','f','m']})
然后应用“where”函数:
df2 = df.where(df['Goals']>10)
我得到以下结果,过滤掉目标 > 10 的结果,但将其他所有内容保留为 NaN:
Gender Goals ID Run Distance
0 m 12.0 1.0 234.0
1 m 23.0 2.0 35.0
2 m 56.0 3.0 77.0
3 NaN NaN NaN NaN
4 NaN NaN NaN NaN
5 NaN NaN NaN NaN
6 NaN NaN NaN NaN
7 NaN NaN NaN NaN
8 NaN NaN NaN NaN
9 m 34.0 10.0 123.0
但是,如果我使用“loc”函数:
df2 = df.loc[df['Goals']>10]
它返回没有 NaN 值的子集数据帧:
Gender Goals ID Run Distance
0 m 12 1 234
1 m 23 2 35
2 m 56 3 77
9 m 34 10 123
所以本质上我很好奇为什么你会使用“where”而不是“loc/iloc”以及为什么它返回 NaN 值?