如何使用python读取两列

时间:2017-12-07 04:39:12

标签: python pandas numpy

如何读取两列,其中第一列包含字母,第二列包含值。

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]

感谢您的帮助。

5 个答案:

答案 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)
相关问题