У меня есть 2 файла CSV с одинаковой структурой, но разной длины: a.csv
2000-01-14,50.94,51.04,49.83,49.94,2.18M,-1.61%
2000-01-18,49.18,49.32,48.39,48.53,3.03M,-2.81%
2000-01-19,48.63,49.37,47.7,47.89,2.49M,-1.33%
2000-01-20,47.98,48.03,46.31,47.43,2.46M,-0.96%
и b.csv
2000-01-14,1.0261,1.0273,1.0111,1.0128,-1.23%,
2000-01-17,1.0128,1.0149,1.0069,1.0118,-0.10%,
2000-01-18,1.0123,1.0143,1.0072,1.0131,0.13%,
2000-01-19,1.0139,1.0166,1.0086,1.0122,-0.09%,
2000-01-20,1.0137,1.0189,1.0072,1.0175,0.52%,
Я хотел бы создать новый файл с Значения столбцов 1-4 умножаются друг на друга. Столбец 0 (дата) должен быть таким же, как в файле с меньшим числом записей. Столбцы 5 и 6 можно отбросить.
Я прочитал в файлах следующий код:
a = pd.read_csv("a.csv", index_col=[0], parse_dates=[0], infer_datetime_format=True, header=None, skiprows=1, delimiter=',', names=['Date', 'Close','Open', 'High','Low', 'Vol.','Change'])
b = pd.read_csv("b.csv", index_col=[0], parse_dates=[0], infer_datetime_format=True, header=None, skiprows=1, delimiter=',', names=['Date', 'Close','Open', 'High','Low', 'Vol.','Change'])
Теперь я подумал, что могу умножить, используя метод mul, но c = a.mul(b, axis = 0)
дает ошибка TypeError: can't multiply sequence by non-int of type str
Я прочитал этот SO-ответ , чтобы сделать
a.Close = (a.Close.values / np.timedelta64(1, 'D')).astype(int)
перед умножением, но это не сработало: TypeError: ufunc divide cannot use operands with types dtype('float64') and dtype('<m8[D]')
Выполнение простого c = (a.Close * b.Close)
Кажется, работает как-то:
Date
2000-01-17 NaN
2000-01-18 49.784914
2000-01-19 49.305957
2000-01-20 48.637326
Name: Close, dtype: float64
Но я не уверен, если результат все еще является pandas dataframe и как я добавляю другие столбцы к этому. Однако я уверен, что это должно быть очень легко, не могли бы вы указать мне правильное направление? Спасибо!