如何读取两列,其中第一列包含字母,第二列包含值。
C0 -0.158040
C1 -0.157117
C2 -0.143805
C3 -0.140561
S4 0.059175
H5 0.128940
H6 0.129007
H7 0.142421
H8 0.139979
我经常在下面使用这个脚本(它适用于两列或更多列),但目前还没有!!
with open('file.csv') as f:
f=[x.strip() for x in f if x.strip()]
data=[tuple(map(float,x.split())) for x in f[2:]]
oX=[x[0] for x in data]
oY=[x[1] for x in data]
感谢您的帮助。
答案 0 :(得分:2)
如果您想要播放来自csv文件的数据,Pandas就是您的选择。 它可以帮助您避免不必要的迭代并进行数据操作 易
。
您可以将文件加载到pandas数据框
df = pd.read_csv('file.csv')
然后选择所需的列
df_temp = df.iloc[:,0:2]
要获得一对行值,您可以使用tolist()函数
df.values.tolist()
输出
[['C1', -0.157117], ['C2', -0.143805], ['C3', -0.140561], ['S4', 0.059175], ['H5', 0.12894], ['H6', 0.12900699999999998], ['H7', 0.142421], ['H8', 0.139979]]
答案 1 :(得分:2)
这是另一种解决方案:
teradata
输出:
import csv
with open('file.csv') as f:
reader = csv.reader(f)
for row in reader:
res = row[0].split()
oX = res[0]
oY = res[1]
print (oX, oY)
答案 2 :(得分:1)
你根本不需要任何图书馆,更不用说pandas或re了。只需读取文件并使用列表推导和字符串方法来提取数据。
with open('file.csv', 'r') as f:
data = f.readlines()
oX = [line.replace('\n', '').split(',')[0] for line in data]
oY = [float(line.replace('\n', '').split(',')[1]) for line in data]
如果您希望每个标签与其价值配对,您可以将它们拉上拉链。
paired = zip(ox, oY)
答案 3 :(得分:1)
如果分隔符包含可变数量的空格字符:
import csv
with open('myfile.csv', newline='') as cf:
cfr = csv.reader(cf, delimiter=' ')
oX=[]
oY=[]
for row in cfr:
oX.append(row[0])
oY.append(float(row[-1]))
答案 4 :(得分:0)
使用numpy.loadtxt
的懒惰解决方案可能是:
labels = numpy.loadtxt(fileName, dtype=np.str, usecols=[0])
values = numpy.loadtxt(fileName, dtype=np.float64, usecols=[1])
pairs = numpy.stack((labels, values), axis=-1)