熊猫在逗号分隔的列中找到平均值

时间:2020-07-21 09:56:28

标签: pandas csv average

我想用逗号分隔的一列取平均值,而在另一列取平均值。

我的文件如下:

<template>
  <div class="hello">
      {{ test.test }}
      <button @click="change">click</button>
  </div>
</template>

<script>
export default {
  name: 'HelloWorld',
  props: ['test'],

  methods: {
    change() {
        // this.test = '.python'
        this.$emit('update:test',{test: this.test.test.concat([1])});
    }
  }
}
</script>

我的输出应如下所示:

ColumnA ColumnB
A, B, C 2.9
A, C    9.087
D       6.78
B, D, C 5.49

我的代码是这样的:

A   7.4435
B   5.645
C   5.83
D   6.135

它必须在同一行,但无法弄清楚。

1 个答案:

答案 0 :(得分:2)

为避免在indexSeries.reset_index之后丢失列值,您在解决方案中由列ColumnB创建了stack,汇总后为列添加了as_index=False最后一个列:

df = (df.set_index('ColumnB')['ColumnA']
        .str.split(',', expand=True)
        .stack()
        .reset_index(name='ColumnA')
        .groupby('ColumnA', as_index=False)['ColumnB']
        .mean())
print (df)
  ColumnA   ColumnB
0       A  5.993500
1       B  4.195000
2       C  5.825667
3       D  6.135000

或使用DataFrame.explode的替代解决方案:

df = (df.assign(ColumnA = df['ColumnA'].str.split(','))
        .explode('ColumnA')
        .groupby('ColumnA', as_index=False)['ColumnB']
        .mean())
print (df)
  ColumnA   ColumnB
0       A  5.993500
1       B  4.195000
2       C  5.825667
3       D  6.135000