如何将Pandas DataFrame转换为float64类型的NumPy数组
如何将CSV中逗号分隔的字符串列转换为float64类型的NumPy数组
你的问题核心是data列的每个元素都是逗号分隔的字符串,直接调用to_numpy()只会生成存储字符串的object数组,需要先将这些字符串解析为数值类型。以下是几种可行的解决方案:
方法一:拆分字符串为多列后转类型
import pandas as pd import numpy as np # 读取CSV文件 df = pd.read_csv('input.csv') # 将每个字符串按逗号拆分并展开为多列,转换为float64后转成NumPy数组 float64_array = df['data'].str.split(',', expand=True).astype(np.float64).to_numpy()
- 解释:
str.split(',', expand=True)把每行的字符串拆分成独立的列,astype(np.float64)将所有列的数据类型统一转为float64,最后to_numpy()输出二维float64数组。
方法二:直接解析字符串为数值数组
如果不想生成中间DataFrame列,可以用np.fromstring直接解析单个字符串:
import pandas as pd import numpy as np df = pd.read_csv('input.csv') # 对每个字符串解析为float数组,再组合成二维NumPy数组 float64_array = np.array(df['data'].apply(lambda x: np.fromstring(x.strip(), sep=',')).tolist(), dtype=np.float64)
- 解释:
np.fromstring(x.strip(), sep=',')会自动将逗号分隔的字符串转为float数组,tolist()将Series中的数组转为普通列表,最后用np.array生成二维float64数组。
注意事项
如果你的原始数据中包含省略号(如样本中的...),需要先清理数据再转换,否则会触发类型转换错误:
# 移除字符串中的省略号 df['data'] = df['data'].str.replace('...', '', regex=False) # 再执行上述转换步骤
验证结果:执行print(float64_array.dtype)会输出float64,符合需求。
内容的提问来源于stack exchange,提问作者pro
相关产品推荐
相关产品推荐

