Как автозаполнить строки в одном столбце с подготовкой данных других столбцов? - PullRequest
1 голос
/ 28 октября 2019

У меня есть фрейм данных A:

   State     Region   Code
0  Texas     Texas      1
1            Houston    0
2            Dallas     0
3            Austin     0
4  Michigan  Michigan   1
5            Ann Arbor  0
6            Yipsilanti 0
7  Alaska    Alaska     1
8            Troy       0

Я бы хотел заполнить все состояния указанным выше состоянием, если код = 0, ожидаю получить вывод, например:

   State     Region   Code   Group
0  Texas     Texas      1      1
1  Texas     Houston    0      1
2  Texas     Dallas     0      1
3  Texas     Austin     0      1
4  Michigan  Michigan   1      2
5  Michigan  Ann Arbor  0      2
6  Michigan  Yipsilanti 0      2
7  Alaska    Alaska     1      3
8  Alaska    Troy       0      3

Я попытался добавить новый столбец «Группа», чтобы разделить вышеуказанные данные на 3 группы, а затем использовать groupby, чтобы заполнить состояние

import pandas as pd
import numpy as np
t1 = pd.Series({'State':'Texas', 'RegionalName':'Texas', 'Code':1})
t2 = pd.Series({'State':'  ', 'RegionalName':'Houston','Code' :0})
df=pd.DataFrame([t1,t2])
df.columns=['State','Region','Code']

, прочитанное из txt.file, для создания указанного выше кадра данных:

df['Group'] = np.where(df['Code'] == 1, df['Code'+1, df['Code'])

тогда это не работает. Любое предложение? Спасибо.

1 Ответ

0 голосов
/ 28 октября 2019

Вы хотите cumsum для Group и ffill для State:

df['Group'] = df['Code'].eq(1).cumsum()
df['State'] = df['State'].ffill()

Выход:

      State      Region Code  Group
0     Texas       Texas    1      1
1     Texas     Houston    0      1
2     Texas      Dallas    0      1
3     Texas      Austin    0      1
4  Michigan    Michigan    1      2
5       Ann       Arbor    0      2
6       Ann  Yipsilanti    0      2
7    Alaska      Alaska    1      3
8    Alaska        Troy    0      3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...