#python #pandas #dataframe
#питон #панды #фрейм данных
Вопрос:
У меня есть несколько кадров данных, из которых я извлекаю количество слов. Столбец озаглавлен «аннотации» в каждом кадре данных. Для этого я использую str.split (). Однако номера строк не всегда перекрываются, поскольку эти кадры данных создаются из более крупного основного кадра данных. Таким образом, строки каждого кадра данных имеют уникальные номера строк. результирующее разделение строки становится NaN, если номера строк не перекрываются. Я пытаюсь найти способ обойти это.
Каждый кадр данных выглядит следующим образом со столбцом аннотации в качестве столбца, для которого я создаю количество слов:
annotations categories CUI_desc negex Class he smoked for 30 years ['opioid'] ['C0439234'] ['uncle'] OPIOID_TYPE
когда я выполняю разбиение строки на первом фрейме данных (в этом примере Opioid_Type_C_Train), я получаю результат, который я ищу:
WC = Opioid_Type_C_Train['annotations'].str.split().str.len() WC = WC.to_frame() WC.rename(columns = {'annotations':'Opioid_Type'}, inplace = True) WC.reset_index(inplace=True) WC.drop("index",axis=1,inplace=True) WC Opioid_Type 5
Как вы можете видеть, я сбросил индекс или номер строки, думая, что это может помочь. Однако, когда я пытаюсь сделать то же самое с другими кадрами данных, я получаю NaN, где у меня должен быть номер:
WC['Other_Drug_Use'] = Other_Drug_Use_C_Train['annotations'].str.split().str.len() WC['Psychiatric_Negated'] = Psychiatric_Negated_C_Train['annotations'].str.split().str.len() WC['Patient_Level_OUD_Assertion'] = Patient_Level_OUD_Assertion_C_Train['annotations'].str.split().str.len() WC['Drug_Screening'] = Drug_Screening_C_Train['annotations'].str.split().str.len() Opioid_Type Other_Drug_Use Psychiatric_Negated Patient_Level_OUD_Assertion Drug_Screening 0 5 NaN NaN NaN NaN 1 3 18.0 NaN NaN NaN 2 4 NaN NaN NaN NaN 3 6 NaN 11.0 NaN NaN 4 7 NaN NaN 10.0 NaN
Причина, по которой я подозреваю, что номер строки-это проблема, возникшая до того, как я очистил индекс с помощью:
WC.reset_index(inplace=True) WC.drop("index",axis=1,inplace=True)
все значения, не относящиеся к «Опиоидному типу», были НэН
Есть ли способ выполнить разделение строк и добавить эту информацию в виде нового столбца во фрейм данных «WC», игнорируя номер строки?
Комментарии:
1. Трудно воспроизвести без ввода данных и ожидаемого вывода.