【发布时间】:2021-04-08 06:18:33
【问题描述】:
我有一个具有二维 A 和 B 的数据框;但是,此数据框是不平衡的,因为数据库不包含 A 和 B 的所有可能组合的值,因此缺少某些值。我想要做的是确保数据框是平衡的,并且那些缺少的元素用零填充。
我正在使用以下代码从我通过 SQLAlchemy 连接到的 sqlite 数据库中获取数据帧的数据
connection = sqlite3.connect("my_database.db")
cursor = connection.cursor()
# set up a query
cursor.execute('SELECT factorA, factorB, COUNT(*) as unique_driver_counts FROM block_optimizer_runs GROUP BY 1, 2')
results = cursor.fetchall()
results_df = pd.DataFrame(results, columns=['factorA', 'factorB', 'count'])
但数据库不包含所有可能的因素 A、因素 B 和因素 C 组合的数据。当这些值不存在时,数据库不返回值;但在数据框中,我需要用零填充这些“缺失”值。
例如
import pandas as pd
data = [['dog', 'house', 1], ['dog', 'apartment', 2], ['dog', 'trailer', 1], ['dog', 'cabin', 0], ['dog', 'shack', 1],
['cat', 'house', 3], ['cat', 'apartment', 1], ['cat', 'trailer', 0], ['cat', 'shack', 3],
['gecko', 'apartment', 3], ['gecko', 'trailer', 2], ['gecko', 'shack', 0] ]
df = pd.DataFrame(data, columns = ['factorA', 'factorB', 'count'])
df
但我想要的是
import pandas as pd
data = [['dog', 'house', 1], ['dog', 'apartment', 2], ['dog', 'trailer', 1], ['dog', 'cabin', 0], ['dog', 'shack', 1],
['cat', 'house', 3], ['cat', 'apartment', 1], ['cat', 'trailer', 0], ['cat', 'cabin', 0], ['cat', 'shack', 3],
['gecko', 'house', 0], ['gecko', 'apartment', 3], ['gecko', 'trailer', 2], ['gecko', 'cabin', 0], ['gecko', 'shack', 0]]
df = pd.DataFrame(data, columns = ['factorA', 'factorB', 'count'])
df
谁能帮我弄清楚如何对可能包含两个以上因素的任意数据集执行此操作?
【问题讨论】: