#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 являются пустыми и заполняются фреймом данных.