我有一个csv文件,其中包含以下列:配方名称(索引),苹果,柑桔,香蕉,瓜,...(以及带有水果的更多列)。
对于每种食谱,都有一行,列出每种水果的重量百分比。但并非所有食谱都包含所有水果。这些是csv文件中的空白。
看起来像这样:
recipe_name apple citrus banana melon pudding 1 0.45 0.78
pudding 2 0.23 0.15 0.12
现在,我想知道每种食谱中的水果数量。因此,我想创建一个额外的列,例如,如果第一个配方包含猕猴桃,香蕉和苹果,则在这个额外的列中必须有3号。像这样:
recipe_name apple citrus banana melon count pudding 1 0.45 0.78 2
pudding 2 0.23 0.15 0.12 3
我试图在Excel,pandas DataFrame,pandas groupby中弄清楚这一点。但是我没有找到解决方案。
最佳答案
在感兴趣的列上调用count
并传递参数axis=1
:
In [217]:
df['count'] = df.ix[:,'apple':].count(axis=1)
df
Out[217]:
recipe_name apple citrus banana melon count
0 pudding 1 0.45 0.78 NaN NaN 2
1 pudding 2 NaN 0.23 0.15 0.12 3