在Pandas Read_CSV中使用UseCols时,以指定的顺序保留列

时间:2016-10-13 14:53:12

标签: python pandas dataframe

我有一个包含50列数据的csv文件。我正在使用Pandas read_csv函数来引入这些列的子集,使用usecols参数来选择我想要的那些:

cols_to_use = [0,1,5,16,8]
df_ret = pd.read_csv(filepath, index_col=False, usecols=cols_to_use)

问题是df_ret包含正确的列,但不是我指定的顺序。它们是按升序排列的,所以[0,1,5,8,16]。 (顺便说一下,列号可以在运行之间改变,这只是一个例子。)这是一个问题,因为其余的代码都有“正确”顺序的数组,我宁愿不必重新排序所有他们

是否有任何聪明的熊猫以指定的顺序拉入列?任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:9)

您可以重复使用相同的cols_to_use列表来按所需顺序选择列:

df_ret = pd.read_csv(filepath, index_col=False, usecols=cols_to_use)[cols_to_use]

答案 1 :(得分:1)

只需在这里附带这个问题(从2018年开始)。

我在熊猫read_csv中发现了同样的问题,并想找出一种使用列标题字符串获取[col_reorder]的方法。就像定义要使用的字符串数组一样简单。

pd.read_csv(filepath, index_col=False, usecols=cols_to_use)[index_strings]