1

I want to set the column index as the Date, but don't know what is being done wrong, the code and first part of the data set are down below.

Code:

from random import randint
import pandas_datareader.data as web
import pandas as pd
import datetime 
import itertools as it
import numpy as np
import csv

start = datetime.datetime(1984, 9, 11)
end = datetime.datetime(2019, 4, 2)

df = pd.read_csv('C:Users\GrahamFam\Desktop\Data Archive\Daily3eve(Archive).txt')
df.columns = ['Date','B1','B2','B3']
df.set_index('Date')

print(df)

Pandas Data:

           Date  B1  B2  B3
0       4022019   7   2   7
1       4012019   3   8   9
2       3312019   5   6   5
3       3302019   9   4   6
4       3292019   4   6   2
5       3282019   1   1   1
6       3272019   0   6   9
7       3262019   9   1   1
8       3252019   9   9   1
9       3242019   3   6   6

I would also like to flip the data, so the old data is first, and new data is last.

  • 4
    You need to assign it back `df = df.set_index('Date')` or use `df.set_index('Date', inplace=True)` – Chris Adams Apr 04 '19 at 15:52
  • 1
    Possible duplicate of [Pandas set\_index does not set the index](https://stackoverflow.com/questions/17328655/pandas-set-index-does-not-set-the-index) – Chris Adams Apr 04 '19 at 15:57

2 Answers2

2

Let pd.read_csv do the heavy lifting.

import pandas as pd
import csv

import sys
if sys.version_info[0] < 3: 
    from StringIO import StringIO
else:
    from io import StringIO

csvdata = StringIO("""
i,Date,B1,B2,B3
0,4022019,7,2,7
1,4012019,3,8,9
2,3312019,5,6,5
3,3302019,9,4,6
4,3292019,4,6,2
5,3282019,1,1,1
6,3272019,0,6,9
7,3262019,9,1,1
8,3252019,9,9,1
9,3242019,3,6,6
""")

df = pd.read_csv(csvdata, sep=",", index_col="Date", parse_dates=True, infer_datetime_format=True)

#df.columns = ['B1','B2']

print(df)

         i  B1  B2  B3
Date                  
4022019  0   7   2   7
4012019  1   3   8   9
3312019  2   5   6   5
3302019  3   9   4   6
3292019  4   4   6   2
3282019  5   1   1   1
3272019  6   0   6   9
3262019  7   9   1   1
3252019  8   9   9   1
3242019  9   3   6   6

Rich Andrews
  • 1,590
  • 8
  • 12
1
from random import randint
import pandas_datareader.data as web
import pandas as pd
import datetime 
import itertools as it
import numpy as np
import csv

start = datetime.datetime(1984, 9, 11)
end = datetime.datetime(2019, 4, 2)

df = pd.read_csv('C:Users\GrahamFam\Desktop\Data Archive\Daily3eve(Archive).txt')
df.columns = ['Date','B1','B2','B3']
#You have to assign it to the df
df = df.set_index('Date')

print(df)
jonboy
  • 415
  • 4
  • 14
  • 45