我有两个列表,如下所示
ingre_list = [['chicken',
'oil',
'garlic',
'pepper',
'juice',
'sugar',
'ketchup',
'vinegar',
'water',
'sauce'],
['butter', 'sugar', 'eggs', 'bananas', 'salt'],
['pork',
'beef',
'egg',
'cheese',
'bread',
'garlic',
'salt',
'pepper',
'milk',
'parsley'],
['beef',
'bread',
'egg',
'onions',
'salt',
'pepper',
'ketchup',
'milk',
'vinegar',
'sugar',
'ketchup'],
['salt', 'sugar', 'butter'],
['sausage',
'garlic',
'tomatoes',
'sauce',
'water',
'basil',
'parsley',
'sugar',
'salt',
'pepper',
'pepper',
'spaghetti',
'cheese'],
['bananas',
'juice',
'salt',
'butter',
'sugar',
'eggs',
'butter',
'cheese',
'cream',
'sugar'],
['beef', 'gravy', 'dressing', 'dressing', 'water'],
['salt', 'butter', 'sugar', 'sugar', 'eggs', 'oats', 'raisins']]
quan_list= [['2 lbs',
'2',
'2',
'3/4 teaspoon',
'1/4 cup',
'1/3 cup',
'2 tablespoons',
'1 tablespoon',
'1/2 cup',
'1/3 cup'],
['1/2 cup', '1 cup', '1', '1', '1/2 teaspoon'],
['1/2',
'1/2',
'1/2',
'1/2 cup',
'1/3 cup',
'1/3',
'1/3',
'1 teaspoon',
'1/3 cup',
'1/4 cup'],
['1/4',
'1/4',
'1/4',
'1/4',
'1 teaspoon',
'1/4 teaspoon',
'4 tablespoons',
'1/2-2/3 cup',
'4 tablespoons',
'4',
'1/2 cup'],
['1 teaspoon', '1/4 cup', '1/2 cup'],
['2 lbs',
'2',
'2',
'2',
'2 cups',
'3 teaspoons',
'2 teaspoons',
'2',
'1 teaspoon',
'1/4-1/2 teaspoon',
'1/4 teaspoon',
'1/4',
'1/4'],
['1/4',
'2 teaspoons',
'1/4 teaspoon',
'3/4 cup',
'3/4',
'3/4',
'1/2 cup',
'1/2',
'1/2',
'1/2'],
['1/2', '1/2', '1/2', '1/2', '1/2 cup'],
['1 teaspoon', '1 cup', '1 cup', '1 cup', '1', '3 cups', '3']]
quan_list
和ingre_list
的长度相同。两个列表的每个内部列表的长度相同。例如,quan_list[0]
与ingre_list[0]
的大小相同。我想从这些列表中创建一个带有标题的数据帧,这些标题是ingre_list
中的项目,每个项目应该在标题中出现一次。然后,每一行应包含quan_list
中成分的数量。
为了创建空的数据框,我使用了以下代码:
unique_ingre= set(x for l in ingre_list for x in l)
df1 = pd.DataFrame(columns=unique_ingre)
现在,我很难在每行中插入数量。
示例数据框考虑值ingre_list[0]
和quan_list[0]
bread egg chicken sugar dressing ..... water garlic
2 lbs 1/3 cup 1/2 cup 2
如果任何人都可以帮助我,我会非常感激。只是告诉您quan_list和ingre_list的长度会增加。如果可以在python的csv文件中编写此内容,也可以。
答案 0 :(得分:2)
您可以尝试一下,请注意,由于您的groupby
在每个子列表中都有重复项,因此我要添加head
和ingre_list
,如果实际数据中没有重复项,则可以删除.groupby(level=0).head(1)
s=pd.concat([pd.Series(y, index=x).groupby(level=0).head(1) for x , y in zip(ingre_list , quan_list)],axis=1).T