【发布时间】:2020-07-22 08:26:00
【问题描述】:
假设我们在数据框 df2 中有一个独特类别的列表:
categories = df2['Category'].unique()
我想遍历 df2 中的每个类别,将其与上面的变量类别匹配,并应用 lambda 函数。语法是什么?
我尝试了以下方法:
df2.loc[df2.Category == categories, :].apply(lambda x: x.sample(n=3) if
x.size*0.01 < 3 else x.sample(frac=0.01))
大概,上面的代码应该遍历类别中的每个类别并带回该类别中的所有项目,对吧?还是我错过了什么?我得到的错误如下:
ValueError: Lengths must match to compare.
我认为,我遇到的错误是因为 df.Category 比类别长,因为 df.Category 是所有类别的列表,它们是重复的,这就是我尝试 .unique() 的原因。有没有办法解决这个问题,所以我的代码可以工作?感谢您的时间。
【问题讨论】:
-
df2['Category'].unique()是一个您可能需要使用isin的列表,但理论上df2['Category]中的每个值都会返回True... -
你的预期输出是什么?
-
我试图从数据帧中的每个类别中抽取样本,而不是从整个数据帧中抽取样本。