2

Timestamp SP DP
20-03-2017 10:00:01 50 60.5
20-03-2017 10:10:00 60 70
20-03-2017 10:40:01 75 80
20-03-2017 11:05:00 44 65
20-03-2017 11:25:01 98 42
20-03-2017 11:50:01 12 99
20-03-2017 12:00:05 13 54
20-03-2017 12:05:01 78 78
20-03-2017 12:59:01 15 89
20-03-2017 13:00:00 46 99
20-03-2017 13:23:01 44 45
20-03-2017 13:45:08 80 39

import csv    

output = []

f = open( 'test.csv', 'r' ) #open the file in read universal mode
for line in f:
    cells = line.split( "," )
    output.append( ( cells[ 0 ], cells[ 1 ] ) ) #since we want the first, second column
print (output)

how to read specific columns and specific rows?

Desired Output:

i want only first column and 2 rows;

Timestamp SP
20-03-2017 10:00:01 50
20-03-2017 10:10:00 60

How to do that?

TB.M
  • 363
  • 3
  • 8
  • 26
  • Possible duplicate of [How can I get a specific field of a csv file?](https://stackoverflow.com/questions/5757743/how-can-i-get-a-specific-field-of-a-csv-file) – TheExorcist Dec 05 '18 at 12:32

3 Answers3

4

Use your csv module, and either count your rows (using the enumerate() function or use itertools.islice() to limit how much is read:

import csv

output = []

with open( 'test.csv', 'r', newline='') as f:
    reader = csv.reader(f)
    for counter, row in enumerate(reader):
        if counter > 2:
            # read only the header and first two rows
            break
        output.append(row[:2])

or using islice():

import csv
from itertools import islice

with open( 'test.csv', 'r', newline='') as f:
    reader = csv.reader(f)
    output = list(islice((row[:2] for row in reader), 3))
Martijn Pieters
  • 1,048,767
  • 296
  • 4,058
  • 3,343
1

You to use pandas to read it.

import pandas
df = pandas.read_csv("filepath", index_col = 0)

Then you can call first column and 2 rows by

df.SP.head(2)

or

df.ix[:1, 0:2] # first row and column first two column
BenjiBB
  • 369
  • 2
  • 14
1

You can use index slicing. Just read csv from the source.

from pandas import *

df = read_csv("Name of csv file.")

df2 = df.ix[:1, 0:2]

print df2

Try it.

Dheeraj
  • 1,102
  • 3
  • 14
  • 29