我们要对一个 DataFrame 做分组统计时,其实跟 SQL 语句的逻辑是差不多的。
groupby.sum(), groupby.count() 等等。
如果要把一个 DataFrame 里的不同列各做 sum(), count() 该如何操作呢?在这里给大家做一个演示。
1 | # 原始数据 |
keyword | weight | other keywords | |
---|---|---|---|
0 | dog | 0.12 | [cat, horse, pig] |
1 | cat | 0.50 | [dog, pig, camel] |
2 | horse | 0.07 | [dog, camel, cat] |
3 | dog | 0.10 | [cat, horse] |
4 | dog | 0.20 | [cat, horse, pig] |
5 | horse | 0.30 | [camel] |
1 | df = animaldf.groupby('keyword').agg({'keyword': 'count', 'weight': 'sum', 'other keywords': 'sum'}) |
keyword | weight | other keywords | |
---|---|---|---|
keyword | |||
cat | 1 | 0.50 | [dog, pig, camel] |
dog | 3 | 0.42 | [cat, horse, pig, cat, horse, cat, horse, pig] |
horse | 2 | 0.37 | [dog, camel, cat, camel] |
这样就已经达到效果了。
如果接下来要继续对数据进行处理,可以先把 index 的名字 keyword 去掉,不去掉的话,转成列时就和现有列 keyword 名字冲突了。
然后把索引转换成列。
1 | df.index.name = None |
最后你想把列改成什么名字就随你了。