尽管我肯定有人会给我一个简单的答案,但我还是把我的头发扯下来了。
data = [{'check': None, 'iterator': 1, 'x1': 1, 'x2': 2, 'x3':3},
{'check': None, 'iterator': 2, 'x1': 1, 'x2': 2, 'x3':3},
{'check': None, 'iterator': 3, 'x1': 1, 'x2': 2 , 'x3':3}]
df = pd.DataFrame(data)
display(df)

我正在尝试通过shifting来填充check列,并通过"iterator“列中的值向右移动。也就是说,第一行的“检查”是1,第二行是2,第三行是3。
这是我正在处理的一个大得多的数据集的简化,所以我希望使用向量化的代码。
发布于 2017-02-17 01:05:20
您可能需要使用numpy的高级索引。
df['check'] = df.filter(like="x").values[np.arange(len(df)), df.iterator - 1]

为了避免模棱两可,这里有一个不同的例子:
data = [{'check': None, 'iterator': 2, 'x1': 3, 'x2': 4, 'x3':3},
{'check': None, 'iterator': 1, 'x1': 1, 'x2': 5, 'x3':3},
{'check': None, 'iterator': 2, 'x1': 2, 'x2': 2 , 'x3':1}]
df = pd.DataFrame(data)
df['check'] = df.filter(like="x").values[np.arange(len(df)), df.iterator-1]
df

https://stackoverflow.com/questions/42287489
复制相似问题