title: Manipulating all elements of the Series object
body: <p>I am new to python and learning. Coming from a .net background.
  Currently I'm learning pandas series and having trouble understanding <em>how this statement produced the intended result</em>.</p>
  <p>lc['int_rate'] is of type pandas.core.series.Series obtained from a DataFrame. It contains values in the format of 12.34%.
  The following statement strips the percent symbol out and converts the individual values to a float64 object.</p>
  <pre><code>lc['int_rate'].str.replace(&quot;%&quot;,&quot;&quot;).astype('float')
  </code></pre>
  <p>I am trying to understand how this one statement manipulated all the elements of the series at one shot. Playing around, i tried the following and as expected it gave me a single concatenated string from the series.</p>
  <pre><code>str = &quot;&quot;
  for i in lc['int_rate']:
      if type(i) == type(str):
          str = str + &quot; &quot; + i
  print(str)
  </code></pre>
  <p>But from this statement onwards, I'm confused. I get the warning, <em>FutureWarning: Columnar iteration over characters will be deprecated in future releases</em>. It seems to be iterating over characters of the string. And gives me no output.</p>
  <pre><code>str = &quot;&quot;
  for i in lc['int_rate'].str:
      if type(i) == type(str):
          str = str + &quot; &quot; + i
  
  print(str)
  </code></pre>
  <p>iter(lc['int_rate']) produces a map object.</p>
  <p>iter(lc['int_rate'].str) produces a generator object.</p>
  <p>Also .str being a property, How did the property result with a generator object?</p>