NLP Classification: What are all of these parameters

I was hoping someone could help walk me through a NLP Classification Learner. I can’t figure out what parameters I need, and exactly what to set them too. I also fear my inexperience with Pandas is holding me back. I’m trying to convert lesson 3 so I hope that helps explain where I am in the process.
I have my labeled data in a pandas data frame. I’m creating the Language Model without problems (as far as I can tell).
So now it’s time to create the data object for my classification. Here’s what I’ve got:

data_clas = (TextList.from_df(PATH, train_df=cardClas, valid_df=cardClas, vocab=data_lm.vocab, text_cols=7, label_cols=21)
                .random_split_by_pct(0.1)
                # randomply keep 10% for validation
                .label_from_df(self, cols='uses_PSCT')
                # labeling for language model
                .databunch(bs=bs))
# saveing the databunch
data_clas.save('data_clas.pkl')

Starting from the top: from_df, because I’m working with data frames. PATH has been working everywhere else for me. For train_df, I gave it my entire data set, since it’s all labeled anyway. For valid_df, I gave it my entire data set again, because, the doc seems to say I have to, and again, its all labeled. For vocab, I gave it the vocabulary of the language model. For text_cols and label_cols I gave the index of the text and label columns. Next I split off 10% of the data set for validation. I don’t know what the point of this is since I already specify a test and validation set, but I’ve done this in all my other data objects. I then specify the where to find the labels for my data set. I’m not sure how necessary this is since I have already specified label_cols, but again, I’ve always seen labels be specified this way.
When I run the code I get the error message in the first line: AttributeError: ‘str’ object has no attribute ‘iloc’. That has been the consistent result since starting this whole process, so I figure I have yet to address my current problem.

My big concern is that I have to pass my data twice. I’ve never seen this in any of the examples and it would surprise me if this was necessary. Additionally, it comes with a lot of other questions. text_cols, label_cols, .random_split_by_pct, and .label_from_df, all specify how the data is handled but now I don’t know which data set they are handling.
Finally, what is TextList? Since I’m already asking all these questions. I might as well add one that’s not so important.