Python pandas会自动对列进行排序

时间:2017-01-13 14:03:09

标签: python pandas

我从pandas数据框创建了一个csv文件,其中包含许多用于ERP系统的列。大多数列都是空的或常量,但系统的importtool需要一个具有指定列顺序的csv文件。

创建数据框时,我有类似的东西:

importlist = pd.DataFrame({ 'A': 'TestA',
                            'C': some values,
                            'B': '0'})

当我打印列表时,列按顺序排列为A,B,C。

有没有办法阻止自动排序?我知道我可以再次手动对列进行排序,但我认为,这不是一个非常好的解决方案,因为大约有50列。

2 个答案:

答案 0 :(得分:3)

为了完整性,您还可以使用OrderedDict传递两个元素元组的列表,其中元组的第一个元素是列名,第二个元素是值列表。

pd.DataFrame(OrderedDict([('A',['TestA', 'TestB']), 
                          ('C', ['Some Item', 'Other Item']),
                         ('B',[0, 1])]))

       A           C  B
0  TestA   Some Item  0
1  TestB  Other Item  1

答案 1 :(得分:1)

您需要传递参数columns以及所需订单列的列表,因为默认的python dict是未加载的:

importlist = pd.DataFrame({ 'A': 'TestA',
                        'C': some values,
                        'B': '0'}, columns = ['A','C','B'])

样品:

importlist = pd.DataFrame({ 'A': ['TestA'],
                            'C':  [4],
                            'B': ['0']}, columns = ['A','C','B'])

print (importlist)
       A  C  B
0  TestA  4  0

如果可能,请使用read_csv阅读csv

docs中是另一种创建DataFrames的方法,其中之一就是 DataFrame.from_items

a = ['TestA','TestB']
b = ['0', '7']
c = [4,7]

print (pd.DataFrame.from_items([('A', a), ('C', c),('B', b)]))
       A  C  B
0  TestA  4  0
1  TestB  7  7