Suggestion: method to slice strings using index columns (start and end) in dataframe
What about implementing the following slice function? The df.start and df.end columns contain the start and end index required to slice the df.string.

```
df.sliced = df.string[df.start:df.end]
```

Currently we can slice columns with a fixed start and end index

```
df.sliced = df.string.str.slice(1, -1)
```

However it would be great if we could do this using variable start and stop indices from the dataframe itself, without the need for lambda functions.

Possible complications:
I can imagine that this would be complicated by the presence of NaN values in the column. 

You could either force users to clean up their data first, so they can only apply the function if the column dtypes of the start and stop are integers (basically: take your dirty boots off before stepping into the house!). 

Or you could be nice, and apply the slice function to anything in the target column that looks like a string, using anything in the start and end columns that looks like an integer. (not that I would have a clue how to do that!) Using this strategy, return NaN only when invalid strings, NaN or floats, or index-out-of-range are encountered?

This problem was raised along with  #8747 in a StackOverflow question. Some code and examples are given.
http://stackoverflow.com/questions/26658213/how-can-i-find-the-start-and-end-of-a-regex-match-using-a-python-pandas-datafram

edit: here is some example code, including a current workaround. Sorry, I'll make sure the code is included immediately next time.

```
import pandas as pd
#some example strings for slicing, start indices, stop indices
h1,h2,h3 = 'MPTMGFWVYITVE','MP-NSSLVYIGLE','MPLETQDALYVAL' 
s1, s2, s3 = 1,1,2
e1, e2, e3 = 7,7,8
#create a pandas dataframe to hold the aligned sequences
df = pd.DataFrame({'hit':[h1,h2,h3],'start': [s1, s2, s3],'end': [e1, e2, e3]})
#reorder columns
df = df[['hit', 'start', 'end']]

#HERE is where the new syntax would be useful to slice the strings, example
#df.sliced = df.hit.str[df.start:df.end] 
#or the equivalent df['sliced'] = df['hit'].str[df['start']:df['end']]

#Current workaround using a lambda function that specifies the start & end columns.
fn_slice_hit = lambda x : x['hit'][x['start']:x['end']]
#apply the slice function to the dataframe
df['sliced'] = df.apply(fn_slice_hit, axis = 1)

In [2]: df
Out[2]: 
             hit  start  end  sliced
0  MPTMGFWVYITVE      1    7  PTMGFW
1  MP-NSSLVYIGLE      1    7  P-NSSL
2  MPLETQDALYVAL      2    8  LETQDA

[3 rows x 4 columns]
```
