Как работать с «динамическими» фреймами данных с использованием pandas?

#python #pandas

#python #pandas

Вопрос:

Допустим, у меня есть следующая таблица

X Y Z мм фф cc
1 2 3 0.2 0.4 0.3
0.1 0.3 0.4

который экспортируется в виде файла .csv, содержит следующее содержимое файла:

      X,Y,Z,mm,ff,cc
     1,2,3,0.2,0.4,0.3
     ,,,0.1,0.3,0.4
 

Теперь .. если в таблице будет только одна строка, я могу получить доступ к любой ячейке в python, используя pandas, например:

     X = df.loc[0, 'X']    # X = 1
    Y = df.loc[0, 'Y']    # Y = 2
    Z = df.loc[0, 'Z']    # Z = 3
    mm_1 = df.loc[0, 'mm']  # mm_1 = 0.2
    ff_1 = df.loc[0, 'ff']  # ff_1 = 0.4
    cc_1 = df.loc[0, 'cc']  # cc_1 = 0.3
 

и если я хочу прочитать ячейки во второй строке, мне нужно изменить код следующим образом:

     mm_2 = df.loc[1, 'mm']  # mm_2 = 0.1
    ff_2 = df.loc[1, 'ff']  # ff_2 = 0.3
    cc_2 = df.loc[1, 'cc']  # cc_2 = 0.4
 

Теперь … проблема в том, что исходный csv-файл может содержать от одной строки до 6 строк.

Давайте будем проще. Если я жестко запрограммирую чтение всех ячеек (0-1), как в приведенном выше коде, у меня возникнут проблемы, когда csv-файл содержит только одну строку, поскольку переменные: mm_2 , ff_2 , cc_2 ничего не найдут.

В pandas есть способ справиться с такими ситуациями?

Комментарии:

1. df.iterrows() ?

2. @QuangHoang ты гений!

3. Напишите ответ, пожалуйста, чтобы я мог его принять

Ответ №1:

Вы можете использовать df.iterrows() или вы также можете выполнить итерацию по обычному циклу и пренебречь значениями, которые равны NaN . Значения NaN являются пустыми и заполняются фреймом данных.