Перемещение строк в нескольких столбцах в свои собственные столбцы Python - PullRequest
2 голосов
/ 16 марта 2020

У меня есть дата-фрейм о данных о покупке, который мне нужно перемещать, чтобы его было легко анализировать. Пока это выглядит так:

'' '

df = 

  | customers bid/offer price  volume
 0| 28        B         95     1200
 1| 1         O         78     6
 2| SOA       IFILL     May20  F
 3| 15        B         99     3
 4| 18        O         60     3
 5| 120       B         40     70
 6| FAL       TGAL      May20  F

В приведенной выше таблице примеров строки в индексах 2 и 6 представляют собой конкретные c данные элемента о записях над ними, поэтому я нужно, чтобы они вышли из текущих столбцов и перешли к своим собственным столбцам рядом с соответствующими записями. Поэтому мне нужен идеальный кадр данных, чтобы он выглядел так:

'' '

df =

 | customers bid/offer price volume shopCode itemCode date  Type
0| 28        B         95    1200   SOA      IFILL    May20 F
1| 1         O         78    6      SOA      IFILL    May20 F
2| 15        B         99    3      FAL      TGAL     May20 F
3| 18        O         60    3      FAL      TGAL     May20 F
4| 120       B         40    70     FAL      TGAL     May20 F

1 Ответ

6 голосов
/ 16 марта 2020

Решение работает, если данные имеют первую цифру c строк, разделенных на одну не цифру c строк на столбец price:

#for correct default RangeIndex
df = df.reset_index(drop=True)

#test numeric rows
m = df['price'].str.isnumeric()
#join together with removed 1 from index for correct match
df1 = pd.concat([df[m], df[~m].rename(lambda x: x-1)], axis=1)
#set correct columns names
L = ['shopCode','itemCode','date','Type']
df1.columns = df.columns.tolist() + L
#back filling missing values
df1[L] = df1[L].bfill()
print (df1)
  customers bid/offer price volume shopCode itemCode   date Type
0        28         B    95   1200      SOA    IFILL  May20    F
1         1         O    78      6      SOA    IFILL  May20    F
3        15         B    99      3      FAL     TGAL  May20    F
4        18         O    60      3      FAL     TGAL  May20    F
5       120         B    40     70      FAL     TGAL  May20    F
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...