迭代多列后按顺序获取列

时间:2017-01-24 00:55:09

标签: python csv pandas ipython

您好我已经迭代了多个列并且它有效。但是所有CSV文件中的列名都按顺序排列:

Output: id   title   content   tags 

但是我的代码按此顺序输出列:

Output : content id  tags  title 

如何按照所有csv文件将其作为

的顺序取回

这是我的代码:

import glob
import os
import pandas as pd
pd.set_option("display.max_rows", 999)
pd.set_option('max_colwidth',100)
import numpy as np
from IPython.display import display
%matplotlib inline

file_path = 'data/'                     
all_files = glob.glob(os.path.join(file_path, "*.csv"))    

merging_csv_files = (pd.read_csv(f) for f in all_files)
stack_exchange_data  = pd.concat(merging_csv_files, ignore_index=True)

print ("Data loaded succesfully!")
print ("Stack Exchane Data has {} rows with {} columns each.".format(*stack_exchange_data.shape))

1 个答案:

答案 0 :(得分:1)

选择具有特定顺序列的DataFrame的一般方法是简单地创建所需顺序的列表,然后将该列表传递给DataFrame的括号运算符,如下所示:

my_col_order = ['id', 'title', 'content', 'tags'] 

df[my_col_order]

此外,您可能需要检查所有DataFrame确实具有相同的列顺序。我不相信Pandas会对concat中的列名进行排序,除非至少有一个DataFrame具有不同的列排序。您可能希望打印出要连接的所有DataFrame中的所有列名称。