大熊猫对数据帧进行了抨击 - 列无序?

时间:2015-04-15 15:29:38

标签: python pandas

我进行了搜索,但没有看到与此特定问题相关的任何结果。我有一个Python dict,并且正在将我的dict转换为pandas数据帧:

pandas.DataFrame(data_dict)

它有效,只有一个问题 - 我的pandas数据框的列与我的Python dict的顺序不同。我不确定大熊猫是如何重新排序的。我如何保留订购?

2 个答案:

答案 0 :(得分:1)

Python字典是一种无序结构,打印它(或在其键上循环)时获得的键顺序是任意的。

在这种情况下,您需要使用

明确指定DataFrame中列的顺序
pandas.DataFrame(data=data_dict, columns=columns_order)

其中column_order是订单中列名的列表。

答案 1 :(得分:1)

Python词典(3.6之前版本)是无序的,因此不能依赖列顺序。您可以在之后简单地设置列顺序。

In [1]:

df = pd.DataFrame({'a':np.random.rand(5),'b':np.random.randn(5)})
df
Out[1]:
          a         b
0  0.512103 -0.102990
1  0.762545 -0.037441
2  0.034237  1.343115
3  0.667295 -0.814033
4  0.372182  0.810172
In [2]:

df = df[['b','a']]
df
Out[2]:
          b         a
0 -0.102990  0.512103
1 -0.037441  0.762545
2  1.343115  0.034237
3 -0.814033  0.667295
4  0.810172  0.372182