Pandas数据框创建不一致

时间:2015-05-30 19:12:56

标签: python arrays numpy pandas

我正在从python词典中创建一个pandas数据框:

import numpy as np
import pandas as pd

obs_dict = {
            'pos':[[0,0],[10,10]],
            'vel':[[0,0],[0,0]],
            'mass':np.array([10000,10000])
           }

print pd.DataFrame(obs_dict)

返回:

    mass       pos     vel
0  10000    [0, 0]  [0, 0]
1  10000  [10, 10]  [0, 0]

请注意,我有一个2d列表作为位置('pos')和velocity('vel')列中的项目。但是,当我用2d numpy数组替换2d列表时:

obs_dict = {
            'pos':np.array([[0,0],[10,10]]),
            'vel':np.array([[0,0],[0,0]]),
            'mass':np.array([10000,10000])
           }

我得到一个例外:

Exception: Data must be 1-dimensional

不幸的是,我使用的数据包含在一个numpy数组中,我不想将它转换为python列表,有没有办法让它工作?

1 个答案:

答案 0 :(得分:0)

在此代码中:

obs_dict = {
        'pos':[[0,0],[10,10]],
        'vel':[[0,0],[0,0]],
        'mass':np.array([10000,10000])
       }
print pd.DataFrame(obs_dict)`

你刚刚得到一个包含一些对象列的数据框,请尝试使用dtypes:

tt = pd.DataFrame(obs_dict)
tt.dtypes

显示:

mass     int64
pos     object
vel     object
dtype: object

我不认为这可以做到。