首页 > 解决方案 > Sqlite 选择并创建新列

问题描述

我有一个名为“tweets_words_pairs”的表。下面附上表格的片段

“tweets_words_pairs”表

我想计算一个单词在每条推文中出现的次数,然后将其添加到一个名为“word_count”的新列中。所以第一个 id 的示例输出片段如下所示

ID 推文ID 单词 字数
1 1408411651238371337 1
2 1408411651238371337 不正确 1
3 1408411651238371337 假设 1
4 1408411651238371337 气候 1
5 1408411651238371337 改变 1
6 1408411651238371337 领带 1

这就是我现在拥有的

import sqlite3
import pandas as pd

df = pd.DataFrame() #create dataframe
conn = sqlite3.connect('tweets_data.sqlite')
curr = conn.cursor() 
curr.execute("SELECT tweet_id, COUNT(word) FROM tweet_word_pairs")
rows = curr.fetchall()
for row in rows:
    print(row)

但是我的输出(如下所示)是错误的,我不确定如何为表创建一个新列,因为我是这个的初学者

(1408411651238371337, 11802)

标签: pythonsqlite

解决方案


GROUP BY您的聚合查询中没有,因此聚合表达式COUNT(word)针对整个表进行评估,而非聚合表达式tweet_id针对随机行评估一次(这是 SQLite 功能)。

SELECT tweet_id, word, COUNT(*) AS word_count 
FROM tweet_word_pairs
GROUP BY tweet_id, word

推荐阅读