如何从仅存在一次的熊猫数据框中过滤出值

时间:2019-07-17 14:45:03

标签: python-3.x pandas dataframe

我有一个带有以下列和值的Pandas数据框

  Temp  Time grain_size
0 335.0 25.0 14.8
1 335.0 30.0 18.7
2 335.0 35.0 22.1
3 187.6 25.0 9.8
4 227.0 25.0 14.2
5 227.0 30.0 16.2
6 118.5 25.0 8.7

给定变量名df的数据帧具有三个不同的值,分别是335.0187.6227.0118.5;但是,值187.6118.5仅出现一次。我想对数据框进行过滤,以使其摆脱仅出现一次的值,因此最终的数据框看起来像这样。

  Temp  Time grain_size
0 335.0 25.0 14.8
1 335.0 30.0 18.7
2 335.0 35.0 22.1
4 227.0 25.0 14.2
5 227.0 30.0 16.2

很明显,在这种简单情况下,我知道仅出现一次的值,并且我可以简单地使用过滤功能将其清除。但是,我想自动化该过程,以便Python可以确定哪些值仅出现一次并自动过滤它们。如何启用此功能?

3 个答案:

答案 0 :(得分:4)

使用duplicated

df[df.Temp.duplicated(keep=False)]
Out[630]: 
    Temp  Time  grain_size
0  335.0  25.0        14.8
1  335.0  30.0        18.7
2  335.0  35.0        22.1
4  227.0  25.0        14.2
5  227.0  30.0        16.2

答案 1 :(得分:0)

尝试一下

<template>
  <div>
    <v-alert
      :value="errorExists"
      type="error"
      transition="slide-y-reverse-transition"
      v-model="errorMessage"
      @click="removeErrors"
    >
      {{ "ERROR: " + this.errorType + " " + this.errorMessage }}
    </v-alert>
  </div>
</template>

<script>
export default {
  computed: {
    errorType: function() {
      let value = this.$store.getters.errorType;
      if (value != undefined && value != null) {
        return this.$store.getters.errorType;
      } else {
        return "";
      }
    },
    errorMessage: function() {
      let value = this.$store.getters.errorMessage;
      if (value != undefined && value != null) {
        return this.$store.getters.errorMessage;
      } else {
        return "";
      }
    },
    errorExists: function() {
      let value = this.$store.getters.errorMessage;
      if (value != undefined && value != null) {
        return true;
      } else {
        return false;
      }
    }
  },

  /* 
   * =========== only changed here ==========
   *  when mounted, the component fires removeError() after 5000 ms.
   */
  mounted() {
    setTimeout(this.removeErrors, 5000)
  }
  // ========================================

  methods: {
    removeErrors(){
      this.$store.dispatch('removeErrors')
      console.log('remove errors')
    }
  },

  data() {
    return {
  //
    };
  }
};
</script>

答案 2 :(得分:0)

dict

这是WeNYoBen做的相同事情的dict方法

seen = {}
for t in df.Temp:
    seen[t] = t in seen

df[df.Temp.map(seen)]

    Temp  Time  grain_size
0  335.0  25.0        14.8
1  335.0  30.0        18.7
2  335.0  35.0        22.1
4  227.0  25.0        14.2
5  227.0  30.0        16.2