【发布时间】:2021-12-13 18:54:56
【问题描述】:
想象一下我有一个 DF:
df = pd.DataFrame({'country':['UK','UK','UK','UK','US','US','US','US','US','US'],
'result':[np.nan,'A','B',np.nan,np.nan,'C','D',np.nan,4,np.nan]})
我想获取给定国家/地区与 np.nan 不同的所有结果列值。
我不明白为什么这不起作用:
country= 'UK'
mask_country = df['country'] == country
mask_result = df['result'].notnull()
# does not work
df.loc[mask_country & mask_result,[country]]
# does not work:
df.loc[mask_country & mask_result,country]
有什么想法吗?
预期结果 ['A','B'] 代表英国 和 ['C','D',4] 用于美国
编辑: 实际上,另一种过滤方式是“给我所有不是 str 的值,而不是 '' 或空格。
【问题讨论】:
-
df.loc[df['country'].eq('UK') & df['result'].notnull(), 'result']? -
t = df[df['country'] == 'UK']['result'].dropna().to_list() --> ['A', 'B']