Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.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 - Fatal编程技术网

在Python中将计算列添加到列的计数频率

在Python中将计算列添加到列的计数频率,python,pandas,Python,Pandas,我是初学者。这是一个虚构的数据集。 我想确定每个“营养素”中“数量”的唯一值,并对其进行计数。我的计划是计算每个“营养素”中每个“量”出现的次数,然后对于那些为1的“量”,它将是“Y”表示“独特”,如果超过1则是“N”。然后我会计算每种营养素有多少独特的值。最后,我想要一个新的数据框,显示“数量”的总计数和每个“营养素”的唯一值的数量 原始数据框包含“食物”、“营养素”和“数量”,其他所有内容都经过计算 Food | Nutrient | Amount | Count | Unique | Co

我是初学者。这是一个虚构的数据集。 我想确定每个“营养素”中“数量”的唯一值,并对其进行计数。我的计划是计算每个“营养素”中每个“量”出现的次数,然后对于那些为1的“量”,它将是“Y”表示“独特”,如果超过1则是“N”。然后我会计算每种营养素有多少独特的值。最后,我想要一个新的数据框,显示“数量”的总计数和每个“营养素”的唯一值的数量

原始数据框包含“食物”、“营养素”和“数量”,其他所有内容都经过计算

Food | Nutrient | Amount | Count | Unique | Count_Unique

Apple | Fiber | 0.1 | 2 | N | 1

Apple | Sugar | 0.2 | 3 | N | 0

Apple | Fat | 0.3 | 2 | N | 1

Banana | Fiber | 0.2 | 1 | Y| 1

Banana | Sugar | 0.2 | 3 | N | 0

Banana | Fat | 0.1 | 1 | Y | 1

Corn | Fiber | 0.1 | 2 | N | 1

Corn | Sugar | 0.2 | 3 | N | 0

Corn | Fat | 0.3 | 2 | N | 1
预期产出:

Nutrient | total count | number of unique values

Fiber | 3 | 1

Sugar | 3 | 0

Fat | 3 | 1

我知道可能有更快的方法可以做到这一点,但如果您能先教我如何编写我的方法,以便我可以学习,我将不胜感激。非常感谢。

此代码将为您提供所需的结果

df.groupby('Nutrient').agg(total_count=('Amount',lambda x:len(x)),unique = ('Unique',lambda x: len(x[x=='Y']))).reset_index()

如果您能先教我如何编写我的方法,我将不胜感激,这样我就可以了解这似乎完全脱离主题。请参阅,。感谢您的回答,但我发现一个错误“aggregate()缺少1个必需的位置参数:“arg”。我该怎么解决呢?你的列名是‘营养’、‘数量’和‘独特’吗?我用虚拟数据框创建了一个excel,但只有前三列,即‘食物’、‘营养’、‘数量’。我想“Unique”将作为计算列添加。agg对我来说是新手,所以我还在学习你的代码是如何工作的,但是非常感谢你的帮助!谢谢。在不重命名列的情况下,我使用了:在不重命名列的情况下,我使用了:Nutrient.groupby('Nutrient').agg({'Food':[lambda x:len(x)],'Amount':[lambda x:len(x[x='Y']))])。reset_index()但它没有返回我想要的。食物每种营养素返回3,但每种营养素返回0。