我正在处理非常混乱的开放式食物事实数据集。 它有很多列,每100g中有一些相应成分(如糖)的量(克)。根据概述(.describe()),大多数列的最大值都超过100,这显然是不可能的。除了能量列以外,这都是正确的,因为能量不是以克为单位。
大多数列的最小值有时也为负。但是,此问题很容易解决:data = data[data >= 0]
我想知道如何消除所有条目(能量列除外)超过100的行。
我尝试过:data = data[data.drop(columns=['energy_100g']) <= 100]
但是也删除了能量列中的所有条目。
有人可以帮我吗?
我真的很感激!
答案 0 :(得分:1)
假设您要删除行,其中除var result = numbs4
.GroupBy(x =>x)
.OrderByDescending(g => g.Key)
.Skip(1)
.First() // That's the second group now
.ToList();
以外的 any 列的值>100。在这种情况下,可以使用pd.DataFrame.any
创建布尔掩码:
energy_100g
等效地,您可以使用data = data[~(data[data.columns.difference(['energy_100g'])] > 100).any(1)]
而不加取反和进行反向比较:
all
在每种情况下,我们都使用data = data[(data[data.columns.difference(['energy_100g'])] <= 100).all(1)]
排除指定列以进行比较。