Python - Pandas - игнорировать данные после пробелов - PullRequest
1 голос
/ 07 августа 2020

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

Это то, что мои данные рамка выглядит так:

   Ingredient  Pounds Used
0        1705      8800.00
1      ZR100S      2934.00
2      *STOCK       321.00
17    Gravity         1.08 

Как мне go игнорировать строки в конце? Мне нужны здесь только строки 0-2.

Я пробовал несколько вещей, но, к сожалению, строки в конце различаются по количеству и тому, насколько они близки к моим желаемым строкам, поэтому я не могу просто вырезать с хвоста. Мне нужно двигаться вниз по строкам, пока я не найду пустую строку, а затем остановлюсь.

1 Ответ

0 голосов
/ 07 августа 2020

Сначала сбросьте индекс, чтобы сделать текущий индекс столбцом. Это потому, что df.index не принимает .shift () Проверяет, что последовательные строки в индексе являются последовательными.

df.reset_index(inplace=True)# reset index
df[(df['index'].eq((df['index'].shift(-1))-1))|(df['index'].eq((df['index'].shift(1))+1))].set_index('index')

Шаг за шагом

#step 1
df.reset_index(inplace=True)# reset index

#step 2
(df['index'].eq((df['index'].shift(-1))-1))#First consecutive check
(df['index'].eq((df['index'].shift(1))+1))#Second consecutive check

#step 3
#(first)or(second) expressed as (first)|(second) combines them thus

(df['index'].eq((df['index'].shift(-1))-1))|(df['index'].eq((df['index'].shift(1))+1))

#step4- get dataframe you go df[(first)or(second)].Thus;
df[(df['index'].eq((df['index'].shift(-1))-1))|(df['index'].eq((df['index'].shift(1))+1))]

#step5- return dataframe to original shape by resetting index
df[(df['index'].eq((df['index'].shift(-1))-1))|(df['index'].eq((df['index'].shift(1))+1))].set_index('index')




       Ingredient  PoundsUsed
index                       
0           1705      8800.0
1         ZR100S      2934.0
2         *STOCK       321.0
...