【发布时间】:2018-06-24 13:42:02
【问题描述】:
问题似乎源于当我尝试在 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()]
有没有办法避免上述情况?
【问题讨论】:
-
object= 没有转换。类型基本上都是字符串。 -
您需要 eval 将对象转换为列表
-
@cᴏʟᴅsᴘᴇᴇᴅ 我使用 dtype 作为
dtype={'numpy': np.float64}但得到ValueError: could not convert string to float: [ 0.83151197 0.00444986] -
显示文件内容和df5对象。
-
@hpaulj 添加到原始帖子中,以便其他人可以看到。
标签: python-3.x pandas numpy