Python Pandas проверяет ячейки на диапазон чисел, скопируйте или пропустите, если их там нет - PullRequest
0 голосов
/ 23 января 2019

Я бы использовал функции pandas isin или iloc, но формат excel сложный, и иногда за данными следуют столбцы без информации, а основной пул записей - столбцы, содержащие до 3 фрагментов данных в ячейке, содержащей только'|'отделить их.В некоторых ячейках отсутствует номер, и я хочу пропустить их, но скопировать с ними.

Выше мой текущий код.У меня гигантский Excel с тысячами записей, и что еще хуже, столбец / строки не аккуратны.В каждой ячейке столбца есть несколько фрагментов данных.Я заметил, что в некоторых из них отсутствует число с именем tail #.То, что я хочу сделать, это найти это число, если оно есть, затем скопировать эту ячейку, если это не так, перейти к следующему столбцу в строке.Затем повторите это для всех клеток.Есть гигантский заголовок, но когда я преобразовал его в CSV, я удалил его с форматированием.Вот почему я ищу номер, потому что есть несколько заголовков.например, годы, например 2010, но затем несколько пустых столбцов до следующего, может быть, через 10 столбцов.Также, пожалуйста, обратите внимание, что под этим заголовком лет есть несколько столбцов данных в строке, которые разделены двумя столбцами без информации.Кроме того, информация в столбце выглядит следующим образом: «13 | что-то что-то | еще несколько слов».Если у него есть номер, как вы видите, я хочу скопировать его.Числа, кажется, колеблются от 0 до не более 30. Наконец, я пытаюсь написать это, используя панд, но мне может понадобиться более ручной способ сделать что-то, потому что использование isin, а iloc не работает.

import pandas as pd
from pandas import ExcelWriter
from pandas import ExcelFile
import os.path as op
from openpyxl import workbook
import re


def extract_export_columns(df, list_of_columns, file_path):
    column_df = df[list_of_columns]
    column_df.to_csv(file_path, index=False, sep="|")
#Orrginal file
input_base_path = 'C:/Users/somedoc input'
main_df_data_file = pd.read_csv(op.join (input_base_path, 'som_excel_doc.csv '))

#Filter for tailnumbers
tail_numbers = main_df_data_file['abcde'] <= 30
main_df_data_file[tail_abcd]
#iterate over list
#number_filter = main_df_data_file.Updated.isin(["15"])
#main_df_data_file[number_filter]
#print(number_filter)
#for row in main_df_data_file.values:
    #for value in row:
       # print(value)
        #print(row)
        # to check the condition

# Product of code
output_base_path = r'C:\Users\some_doc output'
extract_export_columns(main_df_data_file,
                        ['Updated 28 Feb 18 Tail #'],
                    op.join(output_base_path, 'UBC_example3.txt'))

Код, который я загружаю в CSV, и успешно создает текстовый файл.Я хочу построить функцию body для сканирования файла excel / csv, чтобы скопировать и вставить в текстовый файл данные, содержащие число.

https://drive.google.com/file/d/1stXxgqBeo_sGksVYL9HHdn2IflFL_bb8/view?usp=sharing

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...