【发布时间】:2021-08-03 15:25:08
【问题描述】:
这个问题可能已经被回答了一百万次了;然而,开始使用 pandas 并习惯数据框的工作方式仍然很困难。
因此,如果有人可以提出我的方法的更好版本来从数据框中检索感兴趣的数据,我将非常感激。
我有一个存储分数的数据框,可以通过以下方式进行模拟:
import random
import pandas as pd
columns = ['ID', 'Number', 'Score 1', 'Score 2', 'Score 3', 'Score 4']
df = pd.DataFrame(columns=columns)
for k in range(100):
idx = random.choice([10, 11, 12, 13, 14])
number = random.choice([1, 2, 3, 4])
scores = [random.choice(range(1000)) for _ in range (4)]
entry = pd.DataFrame([[idx, number] + scores], columns=df.columns)
df = df.append(entry)
诀窍在于,对于给定的 ID,给定的数字 N 可以出现 X 次,其中 X 是非常数。但是,对于数据框中的每一行,分数的数量是固定的,即在本例中为 4。
我想为给定 ID 选择分数 4 并按数字分组。例如
# Retrieve scores of ID 10
id_scores = df.loc[df['ID'] == 10]
numbers = id_scores.Number.unique()
data = list()
for n in numbers:
data.append(id_scores.loc[id_scores['Number'] == n]['Score 4'].values)
上面的代码有效.. 但我不需要精通 pandas 就可以理解这不是正确的方法。然后,我的目标是用箱线图绘制给定数字(x 轴)的得分 4。因此,每个框可能不包含相同数量的分数,因为给定 ID 的值数不固定。
【问题讨论】:
标签: python python-3.x pandas pandas-groupby