Настройка столбцов данных в Pandas - PullRequest
0 голосов
/ 22 октября 2018

У меня есть вывод кадра данных, который выглядит следующим образом:

Index      Region    Date
0       W S CENTRAL  Sep 2018
1               388          
0          MOUNTAIN  Sep 2018
1               229          
0           PACIFIC  Sep 2018
1               145 

Я хотел бы поместить каждую итерацию числового значения под каждого региона, то есть: 388 в поле Регион, и поместитьэто в новом столбце рядом со столбцом Region с именем Total.

Данные начинаются в формате .txt и считываются в сценарий в виде списка в списке, например:

[[W S CENTRAL, 388], [MOUNTAIN, 229], [PACIFIC, 145]]

Я бы хотел, чтобы мой вывод был:

Region      Total      Date
WS CENTRAL  388       Sep 2018
MOUNTAIN    229       Sep 2018
PACIFIC     145       Sep 2018

Итак, я могу сгруппировать () дату для каждого региона.

Код для разбора списков в кадре данныхis:

def join_words(n):
    frames = list()

    for listy in n:
        grouper = groupby(listy, key=str.isalpha)
        joins = [[' '.join(v)] if alpha_flag else list(v) for alpha_flag, v in grouper]
        res = list(chain.from_iterable(joins))
        df = pd.DataFrame(res, columns = ['Region'])
        df['Date'] = os.path.split(file)[-1]
        frames.append(df)

    new_df = pd.concat(frames)
    return new_df

Проблема возникает при замене переменной res на фрейм данных;as res печатает как список версий того, что я хочу в качестве вывода.Переменные grouper и joins используются для прохождения строк рядом друг с другом и объединения их в одну строку (для целей названия страны).

1 Ответ

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

Вы можете использовать функцию сдвига в вашем случае.(глядя на то, как выглядит ваш фрейм данных)

df['Total'] = df['Region'].shift(-1)

df = df[df.index %2 == 0]
order = [0,2,1]
df = df[df.columns[order]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...