我正在从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列表,有没有办法让它工作?
答案 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
我不认为这可以做到。