根据不同列的值,从pandas列表列获取列表元素

3

我有一个Pandas DataFrame,其中包含一个列表列,如下所示。

    selection  weeks
0   2            [43, 44, 45, 46, 47, 48, 49, 50, 51, 52]
1   3            [43, 44, 45, 46, 47, 48, 49, 50, 51, 52]
2   1            [43, 44, 45, 46, 47, 48, 49, 50, 51, 52]

我该如何根据选择值获取前N个元素以获得以下结果?
    selection  weeks                                     select_week 
0   2          [43, 44, 45, 46, 47, 48, 49, 50, 51, 52]  [43, 44]
1   3          [43, 44, 45, 46, 47, 48, 49, 50, 51, 52]  [43, 44, 45]
2   1          [43, 44, 45, 46, 47, 48, 49, 50, 51, 52]  [43]

列表的长度在整个“weeks”列中是否保持一致? - Ch3steR
@Ch3steR - 是的。 - d.r.
1个回答

3
使用索引选择列表推导式:
df['select_week'] = [x[:y] for x, y in df[['weeks','selection']].to_numpy()]

或者DataFrame.apply

df['select_week'] = df.apply(lambda x: x['weeks'][:x['selection']], axis=1)

嗨。我有一个愚蠢的疑问。为什么这个不起作用?df.weeks.str[0: df.selection] - Mayank Porwal
1
@MayankPorwal - 因为.str[:N]仅适用于标量,所以无法传递另一列。 - jezrael

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接