我有一个有 4 列的 pandas DataFrame,我想创建一个 只有 三列的 新 DataFrame 。这个问题类似于:Extracting specific columns from a dataframebut for pandas not 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
pandasnic 的做法是什么?
有一种方法可以做到这一点,它实际上看起来类似于 R
new = old[['A', 'C', 'D']].copy()
在这里,您只需从原始数据框中选择所需的列并为它们创建一个变量。如果您想修改新的数据框,您可能希望使用.copy()来避免SettingWithCopyWarning.
.copy()
SettingWithCopyWarning
另一种方法是使用filter默认情况下创建副本:
filter
new = old.filter(['A','B','D'], axis=1)
最后,根据原始数据框中的列数,使用 a 表达这一点可能更简洁drop(默认情况下这也会创建一个副本):
drop
new = old.drop('B', axis=1)