当前位置: 首页 > 知识库问答 >
问题:

将特定选定列作为副本提取到新数据帧

姬俊能
2023-03-14

我有一个有4列的pandas DataFrame,我想创建一个只有其中3列的新DataFrame。这个问题类似于:从数据帧中提取特定列,但对pandas来说不是R。下面的代码不起作用,会引发错误,当然也不是pandasnic的方法。

import pandas as pd
old = pd.DataFrame({'A' : [4,5], 'B' : [10,20], 'C' : [100,50], 'D' : [-30,-50]})
new = pd.DataFrame(zip(old.A, old.C, old.D)) # raises TypeError: data argument can't be an iterator 

熊猫式的方法是什么?

共有3个答案

吴涵育
2023-03-14

另一个更简单的方法似乎是:

new = pd.DataFrame([old.A, old.B, old.C]).transpose()

其中old.column_name将给出一个系列。列出要保留的所有列序列,并将其传递给DataFrame构造函数。我们需要做一个换位来调整形状。

In [14]:pd.DataFrame([old.A, old.B, old.C]).transpose()
Out[14]: 
   A   B    C
0  4  10  100
1  5  20   50
夹谷宜民
2023-03-14

最简单的方法是

new = old[['A','C','D']]

.

何勇
2023-03-14

有一种方法可以这样做,实际上它看起来类似于R

new = old[['A', 'C', 'D']].copy()

在这里,您只是从原始数据帧中选择所需的列,并为这些列创建一个变量。如果您想要修改新的dataframe,您可能希望使用.copy()来避免SettingWithCopyWarning

另一种方法是使用filter,它将在默认情况下创建副本:

new = old.filter(['A','B','D'], axis=1)

最后,根据原始数据帧中的列数,使用drop(默认情况下,这也将创建一个副本)来表达它可能更简洁:

new = old.drop('B', axis=1)
 类似资料:
  • 问题内容: 我有一个带有4列的pandas DataFrame,我想创建一个 只有 三个列的 新 DataFrame 。这个问题类似于:从数据框中提取特定的列,但对于不是R的熊猫来说。以下代码不起作用,会引发错误,并且肯定不是熊猫的方式。 熊猫人做这件事的方法是什么? 问题答案: 有一种方法可以做到,它实际上看起来类似于R 在这里,您只是从原始数据框中选择所需的列,并为这些列创建变量。如果您想完全

  • 我有一个25列的数据帧和一个数组([2,4,8,10,11,12,13,14,17,18,19,20,21,22,23],dtype=int64)。我想从dataframe中选择一些特定的列,这些列的索引由数组的元素给出,并将它们存储在一个新的dataframe中(比如df1)。例如,新数据帧将有原始数据帧的第2、第4、第23列。

  • 对于熊猫数据帧的特定列,该列实际上是转换成BCD的16位数据。我只想提取特定行的14-8位并转换为BCD。下面的公式适用于如下的小数据帧。 但当我申请时 对于688126行的较大数据帧,我得到一个错误,说 基数为2的int()的文本无效:“” 错误如下所示 ValueError Traceback(最近调用最后一次)在1 df.LO_TIME_0_J2_0---- C:\ProgramData\A

  • 问题内容: 我有一个包含6列的R数据框,并且我想创建一个仅包含三列的新数据框。 假设我的数据帧df,我想提列A,B和E,这是唯一的命令,我可以计算出: 有没有更紧凑的方法可以做到这一点? 问题答案: 如果您的data.frame被调用,则使用dplyr包df1: 也可以在不使用%>%管道的情况下将其写为:

  • 问题内容: 这是一个简单的问题,但请说我有一个MxN矩阵。我要做的就是提取特定的列并将其存储在另一个numpy数组中,但是我得到了无效的语法错误。这是代码: 似乎上述行就足够了,但我想不是。我环顾四周,但找不到关于此特定场景的任何语法明智的方法。 问题答案: 我假设你想要的列和? 要一次选择多个列,请使用 要一次选择一个,请使用 带有名称: 您可以从…获得名字。

  • 我不知道如何选择特定的JSON数据。 如何更改此代码以使我只有id,而没有其他响应数据? 我在网上阅读,显然我需要使用结构?我不确定如何处理这个问题。 这将返回...