0

I'm doing sendex's machine learning tuturial on youtube and trying to replicate his code.

import pandas as pd
import numpy as np
import quandl

df = quandl.get("WIKI/GOOGL")
df = df.iloc[:,7:]
df['HL_PLT'] = (df['Adj. High'] - df['Adj. Low']) / df['Adj. High'] * 100
df['PCT_change'] = (df['Adj. Close'] - df['Adj. Open']) / df['Adj. Open'] * 100

I got an error

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-32-7b605dbbfdfe> in <module>
      1 df = quandl.get("WIKI/GOOGL")
      2 df = df.iloc[:,7:]
----> 3 df['HL_PLT'] = (df['Adj. High'] - df['Adj. Low']) / df['Adj. High'] * 100
      4 df['PCT_change'] = (df['Adj. Close'] - df['Adj. Open']) / df['Adj. Open'] * 100

~\Anaconda3\lib\site-packages\pandas\core\frame.py in __setitem__(self, key, value)
   3026 
   3027         # see if we can slice the rows
-> 3028         indexer = convert_to_index_sliceable(self, key)
   3029         if indexer is not None:
   3030             # either we have a slice or we have a string that can be converted

~\Anaconda3\lib\site-packages\pandas\core\indexing.py in convert_to_index_sliceable(obj, key)
   2144         if idx._supports_partial_string_indexing:
   2145             try:
-> 2146                 return idx._get_string_slice(key)
   2147             except (KeyError, ValueError, NotImplementedError):
   2148                 return None

~\Anaconda3\lib\site-packages\pandas\core\indexes\datetimes.py in _get_string_slice(self, key, use_lhs, use_rhs)
    678     def _get_string_slice(self, key: str, use_lhs: bool = True, use_rhs: bool = True):
    679         freq = getattr(self, "freqstr", getattr(self, "inferred_freq", None))
--> 680         parsed, reso = parsing.parse_time_string(key, freq)
    681         reso = Resolution.from_attrname(reso)
    682         loc = self._partial_date_slice(reso, parsed, use_lhs=use_lhs, use_rhs=use_rhs)

pandas\_libs\tslibs\parsing.pyx in pandas._libs.tslibs.parsing.parse_time_string()

pandas\_libs\tslibs\parsing.pyx in pandas._libs.tslibs.parsing.parse_datetime_string_with_reso()

pandas\_libs\tslibs\parsing.pyx in pandas._libs.tslibs.parsing.dateutil_parse()

TypeError: 'NoneType' object is not iterable

What I really curious is, without creating the column, the code run just fine

(df['Adj. High'] - df['Adj. Low']) / df['Adj. High'] * 100
(df['Adj. Close'] - df['Adj. Open']) / df['Adj. Open'] * 100
Date
2004-08-19    0.324968
2004-08-20    7.227007
2004-08-23   -1.227880
2004-08-24   -5.726357
2004-08-25    1.183658
                ...   
2018-03-21    0.130884
2018-03-22   -2.487014
2018-03-23   -2.360729
2018-03-26    0.332191
2018-03-27   -5.353887
Length: 3424, dtype: float64

Even with some variable name, the column still created successfully

df['1'] = (df['Adj. High'] - df['Adj. Low']) / df['Adj. High'] * 100
df['2'] = (df['Adj. Close'] - df['Adj. Open']) / df['Adj. Open'] * 100
df

Adj. Open   Adj. High   Adj. Low    Adj. Close  Adj. Volume 1   2
Date                            
2004-08-19  50.159839   52.191109   48.128568   50.322842   44659000.0  7.783971    0.324968
2004-08-20  50.661387   54.708881   50.405597   54.322689   22834300.0  7.865787    7.227007
2004-08-23  55.551482   56.915693   54.693835   54.869377   18256100.0  3.903772    -1.227880
2004-08-24  55.792225   55.972783   51.945350   52.597363   15247300.0  7.195341    -5.726357
2004-08-25  52.542193   54.167209   52.100830   53.164113   9188600.0   3.814815    1.183658
... ... ... ... ... ... ... ...
2018-03-21  1092.570000 1108.700000 1087.210000 1094.000000 1990515.0   1.938306    0.130884
2018-03-22  1080.010000 1083.920000 1049.640000 1053.150000 3418154.0   3.162595    -2.487014
2018-03-23  1051.370000 1066.780000 1024.870000 1026.550000 2413517.0   3.928645    -2.360729
2018-03-26  1050.600000 1059.270000 1010.580000 1054.090000 3272409.0   4.596562    0.332191
2018-03-27  1063.900000 1064.540000 997.620000  1006.940000 2940957.0   6.286283    -5.353887
3424 rows × 7 columns

Column name 'a' created just fine too, but 'b' or anything longer than that created an error.

'TypeError: 'NoneType' object is not iterable'

wanburana
  • 157
  • 1
  • 9
  • Does this answer your question? [TypeError: 'NoneType' object is not iterable in Python](https://stackoverflow.com/questions/3887381/typeerror-nonetype-object-is-not-iterable-in-python) – Enis Arik Sep 25 '20 at 17:03
  • @earik87 I feel like it is not proper behaviour, I could created columns with few names just fine, but cannot created column with the name I want. and I don't think 'iterable' has any thing to do with column creation – wanburana Sep 25 '20 at 18:36

0 Answers0