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

2024-04-26 06:57:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个有4列的pandas数据框,我想创建一个只有3列的数据框。这个问题类似于:Extracting specific columns from a data frame,但对于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 

潘达斯式的方法是什么?


Tags: columns数据方法代码fromdataframepandasdata
3条回答

最简单的方法是

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

是的。

有一种方法可以做到这一点

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

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

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

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

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

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

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

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

老列名会给你一个系列。 列出要保留的所有列序列,并将其传递给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

相关问题 更多 >