问题似乎源于当我尝试在nparray上执行操作时读取带有类型问题的read_csv的csv。以下是最低工作示例。
x = np.array([0.83151197,0.00444986])
df = pd.DataFrame({'numpy': [x]})
np.array(df['numpy']).mean()
Out[151]: array([ 0.83151197, 0.00444986])
这是我所期待的。但是,如果我将结果写入文件然后将数据读回到pandas DataFrame中,则类型会被破坏。
x = np.array([0.83151197,0.00444986])
df = pd.DataFrame({'numpy': [x]})
df.to_csv('C:/temp/test5.csv')
df5 = pd.read_csv('C:/temp/test5.csv', dtype={'numpy': object})
np.array(df5['numpy']).mean()
TypeError:/:'str'和'long'
的不支持的操作数类型
以下是“df5”对象
的输出df5
Out[186]:
Unnamed: 0 numpy
0 0 [0.83151197 0.00444986]
以下是文件内容:
,numpy
0,[ 0.83151197 0.00444986]
我弄清楚如何让它工作的唯一方法是读取数据并手动转换类型,这看起来很傻和慢。
[float(num) for num in df5['numpy'][0][1:-1].split()]
无论如何都要避免上述情况?
答案 0 :(得分:2)
enc_id | enc_vs | playerCount
32 1,62,12,23 4
期望一维数组对象为pd.DataFrame({'col_name': data})
:
data
你用In [63]: pd.DataFrame({'numpy': [0.83151197,0.00444986]})
Out[63]:
numpy
0 0.831512
1 0.004450
In [64]: pd.DataFrame({'numpy': np.array([0.83151197,0.00444986])})
Out[64]:
numpy
0 0.831512
1 0.004450
包裹了numpy数组,所以你传递了一个numpy数组列表:
[]
将In [65]: pd.DataFrame({'numpy': [np.array([0.83151197,0.00444986])]})
Out[65]:
numpy
0 [0.83151197, 0.00444986]
替换为df = pd.DataFrame({'numpy': [x]})
演示:
df = pd.DataFrame({'numpy': x})