从特定元素开始列表

问题描述 投票:0回答:2

我想问你一个简单的问题。

也就是说,我有一个数据框,其中一列包含多行,如下所示:

`10712 99883522686 [10, 11, 12, 1, 2, 3, 4, 5, 6, 7, 8, 9]

10714 9998240348 [10, 11, 12, 1, 2, 3, 4, 5, 6, 7, 8, 9]

10715 99997364349 [10, 11, 12, 1, 2, 3, 4, 5, 6, 7, 8, 9]`

我想重新设计这个列表,仅当第三个元素是数字 12 时才从它的第三个元素开始,就像这里的这个例子,这样我在所有行中都会得到一个看起来像这样的列表。

`10712 99883522686 [12, 1, 2, 3, 4, 5, 6, 7, 8, 9]

10714 9998240348 [12, 1, 2, 3, 4, 5, 6, 7, 8, 9]

10715 99997364349 [12、1、2、3、4、5、6、7、8、9]`

谢谢。 ` def transform_row(行): 如果行[“月”][2] == 12: new_list = 行[“月”][2:] + 行[“月”][:2] 别的: new_list = 行[“月”] 返回新列表

df[“月”] = df.apply(transform_row, axis=1)

打印(df)`

pandas indexing row
2个回答
0
投票

您可以使用:

df['month'] = [l[l.index(12):] for l in df['month']]

0
投票

用途:

m = df["months"].str[2].eq(12)

df['months'] = df['months'].mask(m, df["months"].str[2:] + df["months"].str[:2])
© www.soinside.com 2019 - 2024. All rights reserved.