list comprehension in pandas

后端 未结 4 906
难免孤独
难免孤独 2020-12-16 07:36

I\'m giving a toy example but it will help me understand what\'s going on for something else I\'m trying to do. Let\'s say I want a new column in a dataframe \'optimal_fruit

4条回答
  •  清酒与你
    2020-12-16 07:53

    Essentially your list comprehension statement is a set of 3 nested loops. In code:

    l = []
    for x in df2['apples']:
        for y in df2['oranges']:
            for z in df2['bananas']:
                l.extend([x * y - z])
    

    The length of your resultant list will be 3 times the length of your DataFrame. Hence the error. To fix, you need the equivalent of:

    for x, y, z in zip(df2['apples'], df2['oranges'], df2['bananas']):
        l.extend([x * y - z])
    

    In terms of list comprehension:

    [x * y - z for x, y, z in zip(df2['apples'], df2['oranges'], df2['bananas'])]
    

提交回复
热议问题