我从pandas数据框创建了一个csv文件,其中包含许多用于ERP系统的列。大多数列都是空的或常量,但系统的importtool需要一个具有指定列顺序的csv文件。
创建数据框时,我有类似的东西:
importlist = pd.DataFrame({ 'A': 'TestA',
'C': some values,
'B': '0'})
当我打印列表时,列按顺序排列为A,B,C。
有没有办法阻止自动排序?我知道我可以再次手动对列进行排序,但我认为,这不是一个非常好的解决方案,因为大约有50列。
答案 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