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