为了账号安全,请及时绑定邮箱和手机立即绑定

从列表列表创建数据帧

从列表列表创建数据帧

RISEBY 2022-08-25 14:13:42
我有两个列表列表,如下所示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',和 的长度相同。两个列表的每个内部列表的长度相同。例如,具有 与 相同的大小。我想从这些列表中创建一个数据帧,其中标题是 来自 的项目,每个项目都应该在标题中出现一次。然后,每行应包含 来自 的成分的数量。为了创建空数据帧,我使用了以下代码:quan_listingre_listquan_list[0]ingre_list[0]ingre_listquan_listunique_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文件中,那也很好。
查看完整描述

1 回答

?
largeQ

TA贡献2039条经验 获得超7个赞

你可以试试,注意我正在添加,并且由于您在每个子列表中都有重复的项目,如果在真实数据中没有重复项,则可以删除groupbyheadingre_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



查看完整回答
反对 回复 2022-08-25
  • 1 回答
  • 0 关注
  • 58 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信