回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我需要用python读取一个.dat文件,它总共有12列,数百万行。我需要把第2、3和4栏和第1栏分开计算。所以在加载.dat文件之前,是否需要删除所有其他不需要的列?如果没有,如何有选择地声明列并要求python进行计算?</p>
<p>.dat文件的一个例子是
<a href="https://drive.google.com/file/d/0B8Ki0GCZHcYbS01KUHZUaEgxMVE/view?usp=sharing" rel="nofollow">data.dat</a></p>
<p>我对python还不熟悉,所以有点关于打开、阅读和计算的指导会很感激。</p>
<p>我已经根据您的建议添加了我作为初学者使用的代码:</p>
<pre><code>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)
</code></pre>
<p>还有我犯的错误:</p>
<pre><code>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
</code></pre>