You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Pandas从CSV字符串行提取数值并转换对应数据类型

从特定格式CSV中提取数值并转换类型

问题描述

我有一个内容如下的CSV文件:

StrainMax 0.125
StrainMin -0.125
cycles_sec 10
time_percent 50

使用以下代码读取文件:

import pandas as pd
df = pd.read_csv('Strains_SI.csv', index_col=None, header=None)

接着执行提取代码:

StrainMax = df.iat[0,0]
StrainMin = df.iat[1,0]
cycles_sec = df.iat[2,0]
time_percent = df.iat[3,0]
print(StrainMax)
print(StrainMin)
print(cycles_sec)
print(time_percent)

得到的结果是包含标识和数值的整行字符串:

StrainMax 0.125
StrainMin -0.125
cycles_sec 10
time_percent 50

需要提取其中的数值并转换为对应类型:

  • 0.125(float类型)
  • -0.125(float类型)
  • 10(integer类型)
  • 50(integer类型)

解决方案

方法1:读取时指定分隔符

你的CSV本质是空格分隔的键值对,读取时指定sep='\s+'(匹配任意数量空格),直接拆分键和数值列,后续提取更高效:

import pandas as pd

# 按空格分隔,将第一列设为索引
df = pd.read_csv('Strains_SI.csv', index_col=0, header=None, sep='\s+')

# 提取并转换类型
strain_max = float(df.loc['StrainMax', 1])
strain_min = float(df.loc['StrainMin', 1])
cycles_sec = int(df.loc['cycles_sec', 1])
time_percent = int(df.loc['time_percent', 1])

# 验证结果和类型
print(strain_max, type(strain_max))
print(strain_min, type(strain_min))
print(cycles_sec, type(cycles_sec))
print(time_percent, type(time_percent))

输出:

0.125 <class 'float'>
-0.125 <class 'float'>
10 <class 'int'>
50 <class 'int'>

方法2:读取后拆分字符串

如果不想修改读取逻辑,可对已读取的整行字符串进行拆分,提取数值部分再转换:

import pandas as pd

df = pd.read_csv('Strains_SI.csv', index_col=None, header=None)

# 拆分每行字符串,取数值部分转换类型
strain_max = float(df.iat[0,0].split()[1])
strain_min = float(df.iat[1,0].split()[1])
cycles_sec = int(df.iat[2,0].split()[1])
time_percent = int(df.iat[3,0].split()[1])

# 验证结果和类型
print(strain_max, type(strain_max))
print(strain_min, type(strain_min))
print(cycles_sec, type(cycles_sec))
print(time_percent, type(time_percent))

该方法通过split()将字符串按空格分割为列表,取索引1的元素(数值部分),再用float()/int()完成类型转换。


内容的提问来源于Stack Exchange,提问作者Scott Richardson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 06:17:36