Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为了审计目的而对唯一值进行迭代?_Python_Pandas_Loops_Loc - Fatal编程技术网

Python 为了审计目的而对唯一值进行迭代?

Python 为了审计目的而对唯一值进行迭代?,python,pandas,loops,loc,Python,Pandas,Loops,Loc,假设我们在dataframe 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)) 我认为,我得

假设我们在dataframe 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))

我认为,我得到的错误是因为df.Category比categories长,因为df.Category是所有类别的列表,这些类别都是重复的,这就是我尝试.unique()的原因。有没有办法解决这个问题,让我的代码正常工作?谢谢你抽出时间

以下是我的建议:

#我复制数据集
作为pd进口熊猫
将numpy作为np导入
np.随机种子(123)
df1=pd.DataFrame({“Category”:np.arange(0,20)。重复(5),
“值”:np.random.random(20*5)})
df2=pd.DataFrame({“Category”:np.arange(20,40)。重复(500),
“值”:np.random.random(20*500)})
df=pd.concat([df1,df2])#我对这两个进行concat以获得不同的类别大小
df2=(df.groupby(“类别”)。如果x.size*0.01<3,则应用(λx:x.sample(n=3
其他x.样本(分数=0.01))
.drop(columns=“Category”))
您可以看到,您得到了一个包含类别的多重索引,以及样本中每个类别的观察值索引。从0到19的类别有3个样本,上述类别有5个样本

               value
Category            
0        1  0.286139
         4  0.719469
         2  0.226851
1        9  0.392118
         7  0.684830

df2['Category'].unique()
是一个您可能需要使用的列表
isin
,但从理论上讲,
df2['Category]
中的每个值都将返回True…您的预期输出是什么?我试图从数据帧中的每个类别中获取样本,而不是从整个数据帧中获取样本。
               value
Category            
0        1  0.286139
         4  0.719469
         2  0.226851
1        9  0.392118
         7  0.684830