Я пишу/сохраняю данные в MySql через python. Если данные столбцов в MySql содержат «NAN», то как я могу их обработать. На данный момент я знаю, как иметь дело с пустыми пространствами или значениями None, но здесь я застрял. данные выглядит следующим образомПреобразование значений «NAN» в NULL в столбцах MySql с кодом python
# file no 2
# some description line
#"Time","col.no","dat.va","all_val","graph_da","tem","vel","acc", "all.valu","rand"
"2016-02-25 14:50:00",0,12.94,20.88,17.87,"NAN",14,14,13.9,"NAN"
"2016-02-25 15:00:00",1,13.48,20.86,18,"NAN",13.4,13,13.2,"NAN"
"2016-02-25 15:10:00",2,13.89,20.84,18.07,18.03,12.8,12,12.6,13
"2016-02-25 21:30:00",3,15.76,20.18,17.96,18.25,0.09,0,0.07,0.16
"2016-02-25 21:40:00",4,15.72,,17.91,,0.08,"NAN",0.09,0.18
"2016-02-25 21:50:00",5,15.66,20.07,17.86,18.17,0.03,"NAN",0.05,0.09
"2016-02-25 23:30:00",6,14.98,19.26,17.12,17.44,"NAN","NAN","NAN","NAN"
есть несколько тысяч линии, которая включает в себя случайным образом этот «NAN» Поэтому было бы здорово, если бы кто-нибудь дать мне логику для решения, например, когда речь идет через NAN, он положил NAN или ничего. мой код для работы с пустым пространством, а None - вот так.
with open(filepath) as f:
lines = f.readlines()
max_lines = len(lines)
for k, line in enumerate(lines):
if k >= (int(skip_header_line) + int(index_line_number)):
data_tmp = line.strip().split(',')
strDate = data_tmp[0].replace("\"", "")
strDate = strDate.split('.')[0]
timestamp = datetime.datetime.strptime(strDate, '%Y-%m-%d %H:%M:%S')
ts = calendar.timegm(timestamp.timetuple())
# _ts = ts * 1000000
data_buffer = [ts] + data_tmp[1:]
data_buffer = [ts] + data_tmp[1:]
data_buffer = [v if v is not "" and v is not " " else None for v in data_buffer]
print data_buffer
cursor.execute(add_data, data_buffer)
cnx.commit()
with open(marker_file, "w") as f:
f.write(" ".join([ str(item[0]), str(data_tmp[0]), str(max_lines),
str(k-int(skip_header_line)+1) ]))
cursor.close()
cnx.close()
Любая помощь или совет будет весьма признателен, потому что я стараюсь изо всех сил, чтобы найти решение, но я не нашел ничего полезного. Заранее спасибо за помощь.
Почему бы не просто предварительно обработать весь файл csv или dat, а заменить «NaN» 'пустым_строкой? Вам даже не нужно писать сценарий python для этого, просто будет работать простой текстовый редактор, который будет искать и заменять. Когда данные импортируются в MySQL, они будут интерпретироваться как нулевые значения, как и нулевые значения, которые отображаются в строке 4 в данных примера, которые вы указали в своем вопросе. – dreftymac
@dreftymac thanx для полезных советов. Я хочу именно эту вещь, чтобы в предварительном процессе заменить «NAN» на пустую строку, но я не могу внести соответствующие изменения. Можете ли вы показать, где я могу внести эти изменения. Я был бы очень благодарен за эту помощь. – Rio
У этого вопроса уже есть ответ на stackoverflow. См., Например, http://stackoverflow.com/a/4128192/42223. Взгляните на это сначала, а затем вернитесь сюда, если вам все еще нужна помощь. – dreftymac