我有一个数据框,其中有些列如下:
A B C
0
4
5
6
7
7
6
5
A中的可能值范围仅为0到7。
另外,我还有一个包含8个元素的列表,如下所示:
List=[2,5,6,8,12,16,26,32] //There are only 8 elements in this list
如果A列中的元素是n,则需要在新列中插入列表中的第n个元素,例如'D'。
如何在不遍历整个数据帧的情况下一次性完成此操作?
生成的数据帧如下所示:
A B C D
0 2
4 12
5 16
6 26
7 32
7 32
6 26
5 16
注意:数据帧很大,迭代是最后一个选项。但如果需要的话,我也可以在任何其他数据结构(如dict)中排列List中的元素。
在“麻雀”的基础上改进的解决方案。
让df成为您的数据集,然后mylist包含要添加到数据帧的值的列表。
假设您想简单地调用新列,new_column
首先将列表编成一系列:
然后使用insert函数添加列。此函数的优点是允许您选择要放置列的位置。 在下面的示例中,我们将新列定位在从左开始的第一个位置(通过设置loc=0)
IIUC,如果您将(不幸命名的)的
List
变成一个ndarray
,您只需自然地索引到它。在这里,我构建了一个新的
m
,但是如果使用m = np.asarray(List)
,同样的方法也应该起作用:df.A
中的值将挑选出m
中的适当元素。请注意,如果您使用的是
numpy
的旧版本,那么您可能必须使用m[df.A.values]
而不是——在过去,numpy
不能很好地与其他版本一起使用,并且pandas
中的一些重构引起了一些头痛。现在情况有所改善。直接分配列表:
替代方案
将列表转换为序列或数组,然后指定:
或者
相关问题 更多 >
编程相关推荐