我想用逗号分隔的一列取平均值,而在另一列取平均值。
我的文件如下:
<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
它必须在同一行,但无法弄清楚。
答案 0 :(得分:2)
为避免在index
和Series.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