当前位置: 首页 > 面试题库 >

从列表中添加数据框中的列

姜宏盛
2023-03-14
问题内容

我有一些像这样的数据框:

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 ,我需要将List中的第 n 个元素插入新列,例如’D’。

如何一口气做到这一点而又不遍历整个数据框?

产生的数据框如下所示:

A   B   C   D
0           2
4           12
5           16
6           26
7           32
7           32
6           26
5           16

注意:数据框很大,迭代是最后一个选项。但是如果需要的话,我也可以将其他数据结构(如dict)排列在“ List”中的元素上。


问题答案:

IIUC,如果将您(不幸的是命名为)List制成ndarray,则可以简单地自然地对其进行索引。

>>> import numpy as np
>>> m = np.arange(16)*10
>>> m[df.A]
array([  0,  40,  50,  60, 150, 150, 140, 130])
>>> df["D"] = m[df.A]
>>> df
    A   B   C    D
0   0 NaN NaN    0
1   4 NaN NaN   40
2   5 NaN NaN   50
3   6 NaN NaN   60
4  15 NaN NaN  150
5  15 NaN NaN  150
6  14 NaN NaN  140
7  13 NaN NaN  130

在这里,我建立了一个新的m,但是如果您使用的话m = np.asarray(List),同样的事情也应该起作用:in中的值df.A将挑选出适当的元素m

请注意,如果您使用的是旧版本的numpy,则可能不得不改用-m[df.A.values]过去,numpy与他人的配合不佳,并且进行某些重构会pandas引起一些麻烦。现在情况有所改善。



 类似资料:
  • 问题内容: 我试图基于一个的数据创建“ n” 。我正在检查in的Integer值,并循环执行sql语句以创建与列中一样多的“ n” 。 这是我的代码: 我需要创建“ n”,但我不知道如何在循环之前声明类型并在for内填充。 现有数据类型: 新的数据类型: 问题答案: 您可以创建一个可变列表并填充它: 但是更好的方法(不使用可变数据结构)是将整数列表 映射 到DataFrames列表中:

  • 很容易将列表列表转换为数据帧: 但是我如何将df转换回列表列表呢?

  • 假设我有一个数据框 和列名称列表 如何将新列添加到以零为值的数据帧中?

  • 问题内容: 我想像这样向数据框添加列“ D”: 根据以下字典: 因此结果数据框显示为: 到目前为止,我尝试了该方法,但无法弄清楚它如何与Dictionary一起工作。 问题答案: 调用并传递字典,这将执行查找并返回该键的关联值:

  • 我试图从包含列表的json中提取一个字段,然后将该列表附加到数据帧中,但遇到了一些不同的错误。 我想我可以将其写入csv,然后用Pandas读取csv,但我尽量避免写入任何文件。我知道我也可以使用StringIO生成csv,但这存在空字节问题。替换这些将是(我认为)另一个逐行的步骤,这将进一步延长脚本完成所需的时间。。。我正在对一个返回成千上万个结果的查询运行此操作,因此保持它的快速和简单是一个优

  • 我有一个如下的数据帧: 我想将其转换为如下内容: B中重复的值是列名称,其值在C列中。我希望它们是数据帧的列 事实上,数据集是通过展平一棵树创建的,其中有更多的列,每个列都是一个内部节点。第一列是根,C是叶 以下是我的一些尝试: 然而,它不起作用。