计算csv文件

时间:2016-06-08 08:29:32

标签: python excel csv pandas

我有一个带有列的csv文件:recipe_name(index),apple,citrus,banana,melon,...(还有更多带水果的列)。 对于每个配方,有一行具有每种水果的重量百分比。但并非所有食谱都包含所有水果。这些是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来解决这个问题..但我没有找到解决方案..有人有想法吗?

2 个答案:

答案 0 :(得分:2)

在感兴趣的列上调用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

答案 1 :(得分:1)

您可以尝试这样的事情

import csv

with open(yourFileName, 'rU') as f:
    data = {row[0]:len([x for x in row[1:] if x]) for row in csv.reader(f, yourDialect)[1:]}

这将为您提供一个字典,其中包含作为食谱名称的关键字及其果实数量的值!