Использование Pandas для чтения и записи значений из столбца Excel с разрывами строк (перенос текста)Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Использование Pandas для чтения и записи значений из столбца Excel с разрывами строк (перенос текста)

Сообщение Anonymous »



Изображение

Изображение


У меня есть Dataframe, содержащий столбец точек с несколькими значениями, разделенными запятыми, дефисами, алфавитами и другими значениями, которые переносятся в текст, что означает наличие более двух пар значений (см. выделенные строки). Мне удалось разделить значения, разделенные дефисами, и значения, разделенные алфавитами, с помощью моего скрипта Python ниже:

импортировать ОС импортировать панд как pd data_path= r'pppppp' таблица = 'ддддд.xlsx' файл = os.path.join(путь_данных, таблица) df = pd.read_excel(файл) point = df.iloc[:, 1].copy() # Создать копию как DataFrame печать (точка) защита Split_column (значение): # Обработка значений NaN если pd.isna(значение): вернуть пд.НаТ, пд.НаТ #Удалить любые '?' и символы после него значение = str(значение).rstrip('...').split('...')[0] # Функция для разделения значений на основе предоставленных критериев если '-' в значении: части = value.split('-') влево, вправо = части[-1], части[0] возврат вправо[-7:], влево[-7:] элиф ',' по значению: части = value.split(',') влево, вправо = части[-1].strip(), части[0].strip() возврат вправо[-7:], влево[-7:] elif Any(c.isalpha() для значения c): #Находим индекс первого символа алфавита index = next((i для i, c в enumerate(value), если c.isalpha()), None) если индекс не равен None: влево = ул(значение)[:индекс] вправо = str(значение)[индекс + 1:индекс + 8] вернуться влево[-7:], вправо еще: вернуть str(значение)[-7:], str(значение)[:-7] # Применяем функцию Split_column к указанному столбцу точки = point.dropna().explode().str.split('\n').explode() Pointseparated = Points.Apply(split_column).Apply(pd.Series) печать (разделенные точками) # Переименовываем полученные столбцы Singlepoint =pointseparated.rename(columns={0: 'start', 1:'end'}) #Если найдено только одно значение, назначьте его для запуска если singlepoint.shape[1] == 1: singlepoint.column = ['начало'] #Сбросим индекс обоих DataFrames df.reset_index(drop=True, inplace=True) Singlepoint.reset_index(drop=True, inplace=True) # Объединить исходный Dataframe и новые столбцы results_df = pd.concat([df, одноточечный], ось=1) # Экспортируем фрейм данных в лист Excel results_df.to_excel(test.xlsx, index=False) Я создал начальный и конечный столбцы, разделив значения в столбце точек, как показано в приведенном выше коде. Задача, с которой я сейчас сталкиваюсь, заключается в разделении значений строк столбца точек, которые имеют разрывы строк, что означает наличие в них более одного набора значений, например, в строке номер 500 на прикрепленном снимке экрана, после разделения на основе алфавита; только первая строка значений возвращается в качестве начальной и конечной точек. Я также хотел бы вернуть этот второй набор значений в начальном (4506110) и конечном (4607056) столбцах.

Кроме того, я хочу записать все значения в столбце точек, разделенные запятой, только в начальный столбец, а не в конечный столбец. Например, в выделенной строке 23 все значения должны быть записаны только в начальном столбце.

Как я могу добавить эти изменения в свой скрипт?
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»