Python проверка, пуста ли строка после нарезки - PullRequest
0 голосов
/ 25 февраля 2020

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

В приведенном ниже примере для строки 1 я повторяю 0, 2, nan, 4, nan Для строки 2 я хочу напечатайте ('пустая строка') перед переходом к строке 3.

Date    bx1 bx2 bx3 bx4 bx5
1        0   2       4
2                   
3        0   1   2   3   4
4        1   2   3   4   5
5                   
6                   
7        0   1   2   3   4

Я пробовал это:

if pd.isnull(m):
    print('emptyrow')

и это:

if pd.isna(df[1]):
    print('empty row')

Вот код для контекста:

layout = [[sg.In(key='-CAL-', enable_events=True, visible=False),
           sg.CalendarButton('Calendar', target='-CAL-', pad=None, font=('MS Sans Serif', 10, 'bold'),
                             button_color=('red', 'white'), format='%m/%d/%Y')],
          [sg.OK(), sg.Cancel()]]

window = sg.Window('Data Collector', layout, grab_anywhere=False, size=(400, 280), return_keyboard_events=True,
                   finalize=True)

event, values = window.read()
adate = (values['-CAL-'])
stu = (values[0])
window.close()

df = pd.read_excel('C:\\Users\\aelfont\\Documents\\python_date_test.xlsx', Sheet_name=0, header=None)

x = len(df.columns)    # length of bx
z = 1                  # used to determine when at end of row
b = 1                  # location of column to start summing
c = len(df.index)      # number of days in the month
r = 1                  # used to stop once last day of month reached
y = 1

# while date < last day in month, do action
# while the above is true, enter data until end of row
# once at end of row, submit and move to next row

while y < c:
    while z < x:
        n = int((values['-CAL-'][3:5]))
        m = df.iloc[n, b]
        z = z + 1
        b = b + 1
        if pd.isnull(m):
            ActionChains(browser) \
                .send_keys(Keys.TAB) \
                .perform()
            continue
        else:
            ActionChains(browser) \
                .send_keys(str(m)) \
                .perform()
        if z == x:
            z = 1
            b = 1
            n = n + 1
            y = y + 1
            time.sleep(5)
            yes = browser.find_element_by_css_selector('button.publishBottom:nth-child(2)')
            time.sleep(5)
            yes.click()
        else:
            ActionChains(browser) \
                .send_keys(Keys.TAB) \
                .perform()
    if y == c:
        break
if pd.isnull(m):
    print('emptyrow')

1 Ответ

0 голосов
/ 25 февраля 2020

Вы можете попробовать следующее:

if pd.isnull(m).all():
    print('emptyrow')

Полный код:

df = df.set_index('Date')
print(df)
for ind, row in df.iterrows():
    print(pd.isnull(row).all())

Вывод:

     bx1    bx2 bx3 bx4 bx5
Date                    
1    0.0    2.0 4.0 NaN NaN
2    NaN    NaN NaN NaN NaN
3    0.0    1.0 2.0 3.0 4.0
4    1.0    2.0 3.0 4.0 5.0
5    NaN    NaN NaN NaN NaN
6    NaN    NaN NaN NaN NaN
7    0.0    1.0 2.0 3.0 4.0

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