用python中的特定列名筛选dataframe

用python中的特定列名筛选dataframe,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个熊猫数据框和一个列表,如下所示 mylist = ['nnn', 'mmm', 'yyy'] mydata = xxx yyy zzz nnn ddd mmm 0 0 10 5 5 5 5 1 1 9 2 3 4 4 2 2 8 8 7 9 0 现在,我只想获取mylist中提到的列,并将其保存为csv文件 i、 e 我目前的代码如下 mydata = pd.read_csv( input_fi

我有一个熊猫数据框和一个列表,如下所示

mylist = ['nnn', 'mmm', 'yyy']
mydata =
   xxx   yyy zzz nnn ddd mmm
0  0  10      5    5   5  5
1  1   9      2    3   4  4
2  2   8      8    7   9  0
现在,我只想获取
mylist
中提到的列,并将其保存为csv文件

i、 e

我目前的代码如下

mydata = pd.read_csv( input_file, header=0)

for item in mylist:
    mydata_new = mydata[item]

print(mydata_new)
mydata_new.to_csv(file_name)

在我看来,我的新数据框产生了错误的结果。我在哪里弄错了?请帮帮我

只需将列名列表传递到索引
df

df[['nnn', 'mmm', 'yyy']]

   nnn  mmm  yyy
0    5    5   10
1    3    4    9
2    7    0    8

如果需要处理列表中不存在的列名,请尝试使用
df.columns.isin
-

df.loc[:, df.columns.isin(['nnn', 'mmm', 'yyy', 'zzzzzz'])]

   yyy  nnn  mmm
0   10    5    5
1    9    3    4
2    8    7    0

您只需将
mylist
放入
[]
中,熊猫就会为您选择它

mydata_new = mydata[mylist]
不确定您的
yyy
是否输入错误

错误的原因是每次在循环中都将
mydata\u new
分配给一个新序列

for item in mylist:
    mydata_new = mydata[item]  # <-  
然后打印出来

print(set(mylist) - set(mydata.columns))

然后查看是否有拼写错误或其他意外行为。

您忽略了一个事实,即列名中有一个(可能的)“拼写错误”。您好,非常感谢。然而,这是一个打字错误。我纠正了它。顺便说一句,我想循环一下,而不是直接提到列标题,因为我的真实数据列表非常长。有什么特别的方法吗?@JCena这可能会让你大吃一惊,但一次选择它们会更快。谢谢你提供的信息。我之所以这么说,是因为
mylist
中的一些列标题名称实际上不在我的数据框架中。所以我得到了一个类似这样的错误:“[‘食谱’‘食物’‘卡路里’…,]不在索引中”。有办法避免这种情况吗?@JCena确实有。请参阅我的上一次编辑。快乐编码!
len(set(mylist) - set(mydata.columns)) > 0
print(set(mylist) - set(mydata.columns))