Calculating difference between two rows in Python / Pandas

前端 未结 3 1183
不知归路
不知归路 2020-11-30 01:19

In python, how can I reference previous row and calculate something against it? Specifically, I am working with dataframes in pandas - I have a da

3条回答
  •  再見小時候
    2020-11-30 01:52

    I don't know pandas, and I'm pretty sure it has something specific for this; however, I'll give you the pure-Python solution, that might be of some help even if you need to use pandas:

    import csv
    import urllib
    
    # This basically retrieves the CSV files and loads it in a list, converting
    # All numeric values to floats
    url='http://ichart.finance.yahoo.com/table.csv?s=IBM&a=00&b=1&c=2011&d=11&e=31&f=2011&g=d&ignore=.csv'
    reader = csv.reader(urllib.urlopen(url), delimiter=',')
    # We sort the output list so the records are ordered by date
    cleaned = sorted([[r[0]] + map(float, r[1:]) for r in list(reader)[1:]])
    
    for i, row in enumerate(cleaned):  # enumerate() yields two-tuples: (, )
        # The try..except here is to skip the IndexError for line 0
        try:
            # This will calculate difference of each numeric field with the same field
            # in the row before this one
            print row[0], [(row[j] - cleaned[i-1][j]) for j in range(1, 7)]
        except IndexError:
            pass
    

提交回复
热议问题