我有一个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

10-08 01:53