排除所有值超过100的行(一列除外)

时间:2018-08-10 14:14:23

标签: python pandas dataframe

我正在处理非常混乱的开放式食物事实数据集。 它有很多列,每100g中有一些相应成分(如糖)的量(克)。根据概述(.describe()),大多数列的最大值都超过100,这显然是不可能的。除了能量列以外,这都是正确的,因为能量不是以克为单位。

大多数列的最小值有时也为负。但是,此问题很容易解决:data = data[data >= 0]

我想知道如何消除所有条目(能量列除外)超过100的行。

我尝试过:data = data[data.drop(columns=['energy_100g']) <= 100]

但是也删除了能量列中的所有条目。

有人可以帮我吗?

我真的很感激!

1 个答案:

答案 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)] 排除指定列以进行比较。