用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))