我有一个带有列的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来解决这个问题..但我没有找到解决方案..有人有想法吗?
答案 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:]}
这将为您提供一个字典,其中包含作为食谱名称的关键字及其果实数量的值!