Lesen und Berechnen aus der .dat-Datei in Python

Ich muss eine .dat-Datei in Python lesen, die insgesamt 12 Spalten und Millionen Zeilen enthält. Ich muss Spalte 2,3 und 4 mit Spalte 1 für meine Berechnung teilen. Muss ich also vor dem Laden der DAT-Datei alle anderen unerwünschten Spalten löschen? Wenn nicht, wie kann ich die Spalte selektiv deklarieren und Python bitten, die Berechnung durchzuführen?

ein Beispiel für die DAT-Datei wäre data.dat

Ich bin neu in Python, daher wäre eine kleine Anleitung zum Öffnen, Lesen und Rechnen sehr hilfreich.

Ich habe den Code hinzugefügt, den ich als Starthilfe für Ihren Vorschlag verwende:

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)

und auch den fehler bekomme ich durch:

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

Antworten auf die Frage(10)

Ihre Antwort auf die Frage