我用熊猫来清理一些数据文件和验证内容。在验证中,我将每一列的内容与一组期望值进行比较。
for col_name, expected in expected_dict.items():
col_values = set(df[col_name])
if not col_values.issubset(expected):
raise ValueError(str(col_values - expected),'in',col_name)我在NaN上遇到了一些意想不到的行为,具体来说,set(series)将每个NaN作为一个唯一的元素。我想出了一个解决方案,那就是set(series.unique())。
s = pd.Series([1,2,1,None,3,None])
set(s) ## Produces {nan, 1.0, 2.0, 3.0, nan}
set(s.unique()) ## Produces {nan, 1.0, 2.0, 3.0}我的问题是,为什么会遇到这种行为呢?我怀疑这与南在熊猫中的表现有关。
发布于 2018-07-18 11:27:58
NaN的一个属性是NaN != NaN,与所有其他数字不同。但是,set first的实现在尝试插入新成员之前先检查id(x)是否与哈希索引中的现有成员匹配。如果有两个具有不同in的对象,它们都具有NaN值,那么您将在集合中获得两个条目。如果它们都有相同的id,它们就会折叠成一个条目。
https://stackoverflow.com/questions/51400727
复制相似问题