Почему я получаю «AttributeError: объект str» не имеет атрибута «iloc» при попытке сослаться на определенную ячейку в столбце pandas df? - PullRequest
0 голосов
/ 18 октября 2018

Я понимаю, что есть несколько способов получить доступ к значению в определенной ячейке в кадре данных, включая "iloc".Однако, когда я пытаюсь использовать iloc, я продолжаю получать ту же ошибку - я также пытался переключить ее и вместо нее вместо "loc", но получаю другую ошибку (чтобы быть конкретным indexError).Отрезанный код выглядит следующим образом: List_of_dfs - это список dfs, в котором каждый df имеет одинаковый столбец.«Секс» - один из таких столбцов с записями «М» или «F».

New_list_of_lists = 
[[(List_of_dfs[i]['HMW_Dosage_ISR']).max(),
(List_of_dfs[i]['Dose per Administration']).sum(),
List_of_dfs[i]['Sex'].iloc[0],
List_of_dfs[i]['ISR_Flag'].any()] for i in range(0,len(subject_IDs))]

Вот что я получаю:

List_of_dfs[i]['ISR_Flag'].any()] for i in range(0,len(subject_IDs))]

AttributeError: 'str' object has no attribute 'iloc'

Я попытался закомментировать строку в столбце «Секс», и она работает нормально, поэтому проблема связана с этим конкретным столбцом.Больше предыстории - когда я делаю "List_of_dfs 1 ['Sex']. Dtype, я получаю" dtype ('O') ".

Любые мысли? Я в основном просто хочу иметь возможностьчтобы извлечь конкретный пол и сохранить его в соответствующей позиции в New_list_of_lists. Любая помощь будет принята с благодарностью. Спасибо:)

Отредактировано, чтобы включить пример данных:

List_of_dfs выглядит так: List_of_dfs

Each df in List_of_dfs has several columns, with the following being of interest:
1) HMW_Dosage_ISR: dtype = float64
2) Dose per Administration: dtype = float64
3) Sex: dtype = 'O' - this value can either be 'M' or 'F'
4) ISR_Flag: dtype = bool

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Если у вас есть фрейм данных List_of_dfs[i], то синтаксис для доступа к первому значению столбца ['Sex']: List_of_dfs[i].at[0, 'Sex'] или List_of_dfs[i].loc[:, 'Sex'].at[0]

0 голосов
/ 18 октября 2018

Если вы запустите List_of_dfs[i]['Sex'], вы заметите, что вы восстанавливаете pd.series типа str.Поскольку .iloc является методом pd.DataFrame, вызов iloc для строковых объектов приведет к этой ошибке.Суть в том, что вы хотите вызвать iloc на Датафреймах, а не сериях

Чтобы заставить ваш код работать, сделайте это

List_of_dfs[i].iloc[0, column_number_of_sex]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...