将分隔的文件列作为列表读取,而不是返回行
Reading delimited file columns as lists, returning rows instead
我有一个很大的 .txt 文件,我想以列表的形式阅读每一列。该文件有 9 列分隔的浮点数,第一行(几千行)是:
0.49406565E-323 0.29532530E+003 0.89244837E+001 0.20901651E-002 0.34989878E+001 0.11594090E+000 0.34025716E-001 0.33723126E+001 0.27954433E+000 0.80757378E-001 0.50813056E+001
我正在这样阅读我的文件:
colnames = ['weight', 'likelihood', 'A_0', 'w_0', 'p_0', 'A_1', 'w_1', 'p_1', 'A_2', 'w_2', 'p_2']
data = pandas.read_csv('data.txt', names=colnames)
weights = data.weight.tolist()
A_0 = data.A_0.tolist()
第一列是权重,其余是参数,我想对所有参数的权重进行加权平均计算。
但是如果我打印 weights
,例如,它 returns 整个文件,weights[0]
是文件的第一行。
为了完成,我的加权平均值应该是这样的:
weighted_A_0 = numpy.average(A_0, weights=weights)
也许 pandas 和 numpy 有更好的方法?
谢谢!
默认情况下 pd.read_csv
查找逗号分隔,但您可以使用 sep
参数指定分隔符,例如:
df = pd.read_csv('data.txt', names=colnames, sep='\t')
制表符分隔 - 有帮助吗?
决赛:
原来它是 ' '
分隔的,所以我们让它与
一起使用
df = pd.read_csv('data.txt', names=colnames, sep='\s+')
由于您没有将任何分隔符传递给 read_csv
函数,它使用逗号作为默认分隔符。您的文件 data.txt
不包含任何逗号,因此它将整个数据放入第一列(权重)。
data = pandas.read_csv('data.txt', names=colnames, delim_whitespace=True)
delim_whitespace : boolean, default False
Specifies whether or not
whitespace (e.g. ' ' or ' ') will be used as the sep.
Equivalent to setting sep='\s+'. If this option is set to True, nothing should be
passed in for the delimiter parameter.
with open(r'C:/input_data.txt') as f:
lines = f.read().splitlines()
lines = [line.split() for line in lines]
#print lines
labels = [column labels]
df = pd.DataFrame.from_records(lines , columns=labels)
我有一个很大的 .txt 文件,我想以列表的形式阅读每一列。该文件有 9 列分隔的浮点数,第一行(几千行)是:
0.49406565E-323 0.29532530E+003 0.89244837E+001 0.20901651E-002 0.34989878E+001 0.11594090E+000 0.34025716E-001 0.33723126E+001 0.27954433E+000 0.80757378E-001 0.50813056E+001
我正在这样阅读我的文件:
colnames = ['weight', 'likelihood', 'A_0', 'w_0', 'p_0', 'A_1', 'w_1', 'p_1', 'A_2', 'w_2', 'p_2']
data = pandas.read_csv('data.txt', names=colnames)
weights = data.weight.tolist()
A_0 = data.A_0.tolist()
第一列是权重,其余是参数,我想对所有参数的权重进行加权平均计算。
但是如果我打印 weights
,例如,它 returns 整个文件,weights[0]
是文件的第一行。
为了完成,我的加权平均值应该是这样的:
weighted_A_0 = numpy.average(A_0, weights=weights)
也许 pandas 和 numpy 有更好的方法?
谢谢!
默认情况下 pd.read_csv
查找逗号分隔,但您可以使用 sep
参数指定分隔符,例如:
df = pd.read_csv('data.txt', names=colnames, sep='\t')
制表符分隔 - 有帮助吗?
决赛:
原来它是 ' '
分隔的,所以我们让它与
df = pd.read_csv('data.txt', names=colnames, sep='\s+')
由于您没有将任何分隔符传递给 read_csv
函数,它使用逗号作为默认分隔符。您的文件 data.txt
不包含任何逗号,因此它将整个数据放入第一列(权重)。
data = pandas.read_csv('data.txt', names=colnames, delim_whitespace=True)
delim_whitespace : boolean, default False
Specifies whether or not whitespace (e.g. ' ' or ' ') will be used as the sep.
Equivalent to setting sep='\s+'. If this option is set to True, nothing should be passed in for the delimiter parameter.
with open(r'C:/input_data.txt') as f:
lines = f.read().splitlines()
lines = [line.split() for line in lines]
#print lines
labels = [column labels]
df = pd.DataFrame.from_records(lines , columns=labels)