У меня есть два csv fies с разными столбцами. Table1Присоединение к CSV или таблицам
title stage jan time
darn 3.001 0.421 5/23/2016 13:14
darn 2.054 0.1213 5/24/2016 14:14
ok 2.829 1.036 5/23/2016 14:14
five 1.115 1.146 5/23/2016 17:14
three 2 5 5/23/2016 21:14
Таблица 2
title mar apr may jun date
darn 0.631 1.321 0.951 1.751 5/23/2016 12:14
ok 1.001 0.247 2.456 0.3216 5/24/2016 18:41
three 0.285 1.283 0.924 956 5/25/2016 17:41
мне нужно присоединиться к ним фильтруются по названию (первичный ключ) и при условии, что время в поле даты в таблице 2, равно (время - 1 часы) в поле даты в таблице 1. Таким образом, на выходе должно быть что-то вроде этого:
title stage jan mar apr may jun date
darn 3.001 0.421 0.631 1.321 0.951 1.751 5/23/2016 13:14
мне было интересно, если это может быть сделано с помощью панд или SQL-запрос является наилучшим способом продвижения вперед. Я поднял глаза и увидел, что панды могут сливаться на основе уникального ключевого значения. импорт панды как э.р.
a = pd.read_csv("1.csv")
b = pd.read_csv("2.csv")
merged = a.merge(b, on='title')
merged.to_csv("output.csv", index=False)
Это программа. Я изо всех сил о том, как установить условие для даты field.Bot SQL и решение Панды приветствуется
не может объединить объекты 'str' и 'Hour'. Он выдает эту ошибку –
@DigantaBharali должен быть столбцом datetime (не строка), вам нужно сначала 'df [" time "] = pd.to_datetame (df [" time "])' и 'df' [ date "] = pd.to_datetame (df [" date "])'. Это даты не строки, поэтому они должны быть преобразованы как таковые. Вы также можете сделать это, читая в csv, используя 'parse_dates'. –
все работает нормально. Просто, что он не соответствует столбцам времени, он дает мне нулевой вывод только с заголовками. Другой вопрос - во время слияния, можем ли мы указать диапазон, например, «если он выпадет в течение одного часа», он вернет эту строку? –