将特定的选定列提取到新DataFrame中作为副本

问题描述

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

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

在这里,您只是从原始数据框中选择所需的列,并为这些列创建变量。如果您想完全修改新的数据框,则可能要.copy()避免使用SettingWithcopyWarning

一种替代方法是使用filter认情况下将创建副本的方法

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

最后,根据原始数据帧中的列数,使用a表示它可能更简洁drop认情况下也会创建一个副本):

new = old.drop('B', axis=1)

解决方法

我有一个带有4列的pandas DataFrame,我想创建一个 只有 三个列的 DataFrame
。这个问题类似于:从数据框中提取特定的列,但对于不是R的熊猫来说。以下代码不起作用,会引发错误,并且肯定不是熊猫的方式。

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

熊猫人做这件事的方法是什么?