Выбор пустой ячейки в Dataframe pandas python - PullRequest
0 голосов
/ 10 марта 2020

Я пытаюсь получить данные со следующего веб-сайта: https://www.bu.edu/phpbin/course-search/section/?t=casma124

в разделе Тип, вы можете видеть, что существуют различные типы классов (LE C, DIS. ..)

Однако один из типов классов пуст. Я пишу на Pycharm для того, чтобы получить расписание каждого типа класса. Так, например. Я могу получить расписание для всех классов типа LE C, используя следующий код, и он работает:

for i in length:
    string_i = str(i)
    if d.loc[string_i, "Type"] == "LEC":
        print(d.loc[string_i, "Schedule"])

Это доска, которую я перевел в информационный кран с веб-сайта:

   Section Type               Schedule Location
0       A1  LEC    MWF 1:25 pm-2:15 pm  STO B50
1       A1  NaN      R 6:30 pm-8:30 pm     ROOM
2       A2  LEC   MWF 12:20 pm-1:10 pm  STO B50
3       A2  NaN      R 6:30 pm-8:30 pm     ROOM
4       A3  LEC    TR 12:30 pm-1:45 pm  STO B50
5       A3  NaN      R 6:30 pm-8:30 pm     ROOM
6       B1  DIS      T 2:00 pm-3:15 pm  EPC 207
7       B2  DIS      T 3:30 pm-4:45 pm  EPC 207
8       B3  DIS      T 5:00 pm-6:15 pm  EPC 207
9       B4  DIS      R 2:00 pm-3:15 pm  EPC 207
10      B5  DIS      M 2:30 pm-3:45 pm  CAS 324
11      B6  DIS      W 2:30 pm-3:45 pm  CAS 324
12      B7  DIS      R 3:30 pm-4:45 pm  EPC 207
13     SA1  IND   MTWR 1:00 pm-3:00 pm  MCS B29
14     SA2  IND    MTR 6:00 pm-8:30 pm  COM 217
15     SB1  IND  MTWR 11:00 am-1:00 pm  PSY B51
16     SB2  IND    MTR 6:00 pm-8:30 pm  PSY B37
17      A1  LEC  MWF 11:15 am-12:05 pm      STO
18      A1  NaN      R 6:30 pm-8:30 pm      NaN
19      A2  LEC    MWF 2:30 pm-3:20 pm      STO
20      A2  NaN      R 6:30 pm-8:30 pm      NaN
21      A3  LEC     TR 8:00 am-9:15 am      STO
22      A3  NaN      R 6:30 pm-8:30 pm      NaN
23      B1  DIS      M 4:30 pm-5:45 pm      NaN
24      B2  DIS     T 12:30 pm-1:45 pm      NaN
25      B3  DIS      T 3:30 pm-4:45 pm      NaN
26      B4  DIS      W 8:30 am-9:45 am      CAS
27      B5  DIS      W 4:30 pm-5:45 pm      NaN
28      B6  DIS     R 12:30 pm-1:45 pm      NaN

Я пытаюсь сделать то же самое для типа класса с пустой ячейкой. Это то, что я имею до сих пор:

for v in length:
    string_v = str(v)
    if d.loc[string_v, "Type"] == (I do not know what to put in here) :
        print(d.loc[string_v, "Schedule"])

Я не знаю, к чему приравнивать d.loc [string_v, "Type"]. Я пробовал пустую строку '' Я также пробовал 'NaN'. Я посмотрел на источник страницы html и там написано, что указанная ячейка c равна $ 0. Поэтому я подумал, что мог бы приравнять его к '0 $', но это тоже не работает

1 Ответ

0 голосов
/ 10 марта 2020

Мне трудно смоделировать ваше дело. Пожалуйста, включите полный код, чтобы каждый мог легко смоделировать ваше дело.

Из вашего вопроса вы пытаетесь обнаружить NaN.

numpy .isnan () , вернуть результат в виде массива bool.

См. код ниже:

import pandas as pd
import numpy as np

a = ['A1', np.NaN, 'MWF', '11:15 am-12:05 pm', 'STO']
b = ['A1', 'LEC', 'MWF', '11:15 am-12:05 pm', 'STO']

df = pd.DataFrame(list(zip(a, b)), columns =['Name', 'val'])
print(df)

for v, row in df.iterrows():
    # print(df.loc[v, 'Name'])
    try:
        if np.isnan(df.loc[v, 'Name']):
            print(df.loc[v, "val"])
    except:
        print("")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...