我需要阅读一个.py文件,它有12列总计和数百万行的行。我需要将第2,3列和第4列分为第1列进行计算。因此,在我加载.dat文件之前,是否需要删除所有其他不需要的列?如果不是的话,我该如何选择性地声明该列并请python来完成数学计算?阅读并从python中执行.dat文件的计算
的.dat文件的一个例子是 data.dat
我是新来的蟒蛇,所以有点指令打开,阅读和计算,将不胜感激。
我已经加入我用的是从你的建议的启动代码:
from sys import argv
import pandas as pd
script, filename = argv
txt = open(filename)
print "Here's your file %r:" % filename
print txt.read()
def your_func(row):
return row['x-momentum']/row['mass']
columns_to_keep = ['mass', 'x-momentum']
dataframe = pd.read_csv('~/Pictures', delimiter="," , usecols=columns_to_keep)
dataframe['new_column'] = dataframe.apply(your_func, axis=1)
,也是错误我熬过来的:
Traceback (most recent call last):
File "flash.py", line 18, in <module>
dataframe = pd.read_csv('~/Pictures', delimiter="," , usecols=columns_to_keep)
File "/home/trina/anaconda2/lib/python2.7/site-packages/pandas/io/parsers.py", line 529, in parser_f
return _read(filepath_or_buffer, kwds)
File "/home/trina/anaconda2/lib/python2.7/site-packages/pandas/io/parsers.py", line 295, in _read
parser = TextFileReader(filepath_or_buffer, **kwds)
File "/home/trina/anaconda2/lib/python2.7/site-packages/pandas/io/parsers.py", line 612, in __init__
self._make_engine(self.engine)
File "/home/trina/anaconda2/lib/python2.7/site-packages/pandas/io/parsers.py", line 747, in _make_engine
self._engine = CParserWrapper(self.f, **self.options)
File "/home/trina/anaconda2/lib/python2.7/site-packages/pandas/io/parsers.py", line 1119, in __init__
self._reader = _parser.TextReader(src, **kwds)
File "pandas/parser.pyx", line 518, in pandas.parser.TextReader.__cinit__ (pandas/parser.c:5030)
ValueError: No columns to parse from file
我猜''〜/ Pictures''不包含你要找的数据。尝试阅读正确的文件。 –
我检查了.dat和.py在我的〜/图片文件夹中 – bhjghjh
您是否期待'pandas.read_csv'猜测您想要打开哪个文件?尝试'pd.read_csv('〜/ Pictures/data.dat',delimiter =“,”,usecols = columns_to_keep)''。或者,删除'txt.read()'并将'txt'作为第一个参数传递给'read_csv'。 –