Python 提取唯一性和循环

Python 提取唯一性和循环,python,pandas,group-by,unique,Python,Pandas,Group By,Unique,我有一个如下所示的数据帧: A B C 0 1 2 PRODUCT_1 1 3 2 PRODUCT_2 2 3 2 PRODUCT_4 3 3 2 PRODUCT_5 4 5 2 PRODUCT_1 5 3 2 PRODUCT_3 我想,对于每个独特的产品,使用a和B列执行模型预测,并存储相应的精度 unique = ["PRODUCT_1", ...] # unique products accuracy for i in uni

我有一个如下所示的数据帧:

   A  B          C
0  1  2  PRODUCT_1
1  3  2  PRODUCT_2
2  3  2  PRODUCT_4
3  3  2  PRODUCT_5
4  5  2  PRODUCT_1
5  3  2  PRODUCT_3
我想,对于每个独特的产品,使用a和B列执行模型预测,并存储相应的精度

unique = ["PRODUCT_1", ...] # unique products
accuracy
for i in unique:
    first_subset = ???  # all rows for product `i` - how do I implement this correctly?

X = first_subset[:, 0]
Y = first_subset[:, 1]

prediction_product_1 = model.predict(X)
accuracy_product_1 = np.sum( (prediction_product_1)/np.sum(Y) )    
accuracy.append([accuracy_product_1, PRODUCT_1])
如何在Python中实现第二点

以-

df = pd.DataFrame(...) # your data 
df

   A  B          C
0  1  2  PRODUCT_1
1  3  2  PRODUCT_2
2  3  2  PRODUCT_4
3  3  2  PRODUCT_5
4  5  2  PRODUCT_1
5  3  2  PRODUCT_3
首先使用

uniques = df.C.unique()

uniques
array(['PRODUCT_1', 'PRODUCT_2', 'PRODUCT_4', 'PRODUCT_5', 'PRODUCT_3'], dtype=object)
要从特定产品中获取所有行,我将使用
groupby
(因此,这里实际上不需要
uniques


基本上,对于每个组,调用
model.predict
并将键值对附加到
acc
dict.

您正在处理的代码在哪里?请仔细查看
df.groupby
。这会为每个唯一的键生成组或更小的
数据帧
。我无法正确初始化循环并为最后一点创建帧,因为我不是高级编码器@cᴏʟᴅsᴘᴇᴇᴅ好的,你不能至少提供一个样本数据和输出吗?你在和熊猫一起工作,是吗?你如何期望在不提供任何信息的情况下得到答案?关于一个明确的问题,还有一些提示吗?如何用numpy来解决这个问题呢?@AlessandroCeccarelli如果你想要一个numpy的答案,不要给这个问题贴上标签。此外,numpy解决方案可能没有那么高效或容易实现。好吧,但每当我尝试运行代码时,它都会在最后一行acc[I]=…“列表分配索引超出范围”报告一个错误;可能是因为我还没有调用“append”命令吗?@AlessandroCeccarelli No你看到循环的顶部了吗?我将
acc
定义为
{}
,而不是
[]
acc = {}
for i, g in df.groupby('C'):
    X, y = g['A'], g['B']
    p = model.predict(X, y)

    acc[i] = (p == y).sum() / len(y)