У меня есть столбец (серия) значений, я пытаюсь переместить символы и быстро никуда не пойду! Я нашел несколько фрагментов кода, чтобы добраться туда, где я сейчас, но мне нужен «Closer». Я работаю с одним столбцом, типом данных (STR). Каждая строка столбца представляет собой серию чисел. Некоторые дублируются. Эти повторяющиеся числа имеют (n-) перед числом. Число (n) будет меняться в зависимости от того, сколько строк повторяющихся чисел указано. У некоторых может быть два дубликата, у некоторых восемь дубликатов. Не имеет значения, порядок должен оставаться неизменным.
Мне нужно go вниз по каждой ячейке или строке, выщипать (n-) слева от строки, поменять местами два символа и добавить это до конца строки. Сортировка номеров не требуется. Столбец состоит из 4-5 тыс. Строк и будет выглядеть как в приведенном ниже примере. Никаких других специальных символов или букв. Кроме того, повторяющиеся строки всегда будут вместе, независимо от того, где находится столбец.
Моя проблема в том, что приведенный ниже код действительно работает и будет проходить через каждую строку, оценивать его на da sh, а затем обрабатывать числа так, как мне нужно. Однако я не узнал, как вернуть изменения в мой фрейм данных из python for-l oop. Я действительно надеялся, что у кого-то есть отличное исправление лямбда или функция pandas apply для одновременного обращения ко всему столбцу. Но я не нашел ничего, что можно было бы настроить для работы. Я знаю, что есть лучший способ, чем медленное прохождение серии, и я хотел бы научиться.
Требуются два возможных исправления:
- Есть ли способ получить приведенный ниже код заменить старое значение df.string вновь созданным значением df.string? Если да, дайте мне знать.
- Я пытался прочитать df.apply, используя функцию разделения, чтобы я мог обратиться ко всему столбцу сразу. Я понимаю, что это умнее. Есть ли пара строк кода, которые бы сделали то, что мне нужно?
Пожалуйста, дайте мне знать, что вы думаете. Я ценю помощь. Спасибо, что нашли время.
import re
import pandas as pd
from pandas import DataFrame, Series
import numpy as np
df = pd.read_excel("E:\Book2.xlsx")
df.column1=df.column1.astype(str)
for r in df['column1']: #Finds Column
if bool(re.search('-', r))!=True: #test if string has '-'
continue
else:
a = [] #string holder for '-'
b = [] #string holder for numbers
for c in r:
if c == '-': #if '-' then hold in A
a.append(c)
else:
b.append(c) #if number then hold in B
t = (''.join(b + a)) #puts '-' at the end of string
z = t[1:] + t[:1] #picks up 1st position char and moves to end of string
r = z #assigns new created string to df.column1 value
print(df)
Starting File: Ending File:
column1 column1
41887 41887
1-41845 41845-1
2-41845 41845-2
40905 40905
1-41323 41323-1
2-41323 41323-2
3-41323 41323-3
41778 41778