#python #pandas
Вопрос:
У меня есть два csv-файла. Оба файла содержат столбец Даты, Запасов, Открытия, Максимума,Минимума,Закрытия за один день. Я сделал один кадр данных из этих двух файлов. Итак, в этом едином фрейме данных 1-й данные запаса 1 печатаются с момента открытия до закрытия дня, а затем данные запаса 2 с момента открытия до конца дня .Данные представлены с интервалом в 15 минут, и день начинается с 2019-01-01 09:15:00 и заканчивается 2019-01-01 15:15:00.
Я хочу создать фрейм данных, в котором будут напечатаны данные stock1 в 2019-01-01 09:15:00, а затем одновременно данные stock2 и так далее для 2019-01-01 09:30:00, 2019-01-01 09:45:00….
Ответ №1:
Новый Ответ:
Прочитав ваш ответ, я решил, что лучшим решением вашей проблемы будет перевод ваших данных в формат фрейма данных с 2 индексами с использованием многоиндексных панд
arrays = [
np.array(["bar", "bar", "baz", "baz", "foo", "foo", "qux", "qux"]),
np.array(["one", "two", "one", "two", "one", "two", "one", "two"]),
]
df = pd.DataFrame(np.random.randn(8, 4), index=arrays)
df
Out[16]:
0 1 2 3
bar one -0.424972 0.567020 0.276232 -1.087401
two -0.673690 0.113648 -1.478427 0.524988
baz one 0.404705 0.577046 -1.715002 -1.039268
two -0.370647 -1.157892 -1.344312 0.844885
foo one 1.075770 -0.109050 1.643563 -1.469388
two 0.357021 -0.674600 -1.776904 -0.968914
qux one -1.294524 0.413738 0.276662 -0.472035
two -0.013960 -0.362543 -0.006154 -0.923061
Старый Ответ
Вы можете использовать метод панд concat
. Если их формат индекса совпадает, API Pandas позаботится обо всем остальном.
import pandas as pd
import datetime
idx = pd.date_range("2018-01-01", periods=5, freq="H")
ts = pd.DataFrame(range(len(idx)), index=idx)
| | 0 |
|:--------------------|----:|
| 2018-01-01 00:00:00 | 0 |
| 2018-01-01 01:00:00 | 1 |
| 2018-01-01 02:00:00 | 2 |
| 2018-01-01 03:00:00 | 3 |
| 2018-01-01 04:00:00 | 4 |
idy = pd.date_range("2018-01-02", periods=10, freq="H")
tsy = pd.DataFrame(range(len(idy)), index=idy)
| | 0 |
|:--------------------|----:|
| 2018-01-02 00:00:00 | 0 |
| 2018-01-02 01:00:00 | 1 |
| 2018-01-02 02:00:00 | 2 |
| 2018-01-02 03:00:00 | 3 |
| 2018-01-02 04:00:00 | 4 |
| 2018-01-02 05:00:00 | 5 |
| 2018-01-02 06:00:00 | 6 |
| 2018-01-02 07:00:00 | 7 |
| 2018-01-02 08:00:00 | 8 |
| 2018-01-02 09:00:00 | 9 |
Результат:
pd.concat([ts, tsy])
| | 0 |
|:--------------------|----:|
| 2018-01-01 00:00:00 | 0 |
| 2018-01-01 01:00:00 | 1 |
| 2018-01-01 02:00:00 | 2 |
| 2018-01-01 03:00:00 | 3 |
| 2018-01-01 04:00:00 | 4 |
| 2018-01-02 00:00:00 | 0 |
| 2018-01-02 01:00:00 | 1 |
| 2018-01-02 02:00:00 | 2 |
| 2018-01-02 03:00:00 | 3 |
| 2018-01-02 04:00:00 | 4 |
| 2018-01-02 05:00:00 | 5 |
| 2018-01-02 06:00:00 | 6 |
| 2018-01-02 07:00:00 | 7 |
| 2018-01-02 08:00:00 | 8 |
| 2018-01-02 09:00:00 | 9 |
Комментарии:
1. Я уже использовал concat для создания одного фрейма данных. Что я хочу, так это заказать их в соответствии с датой. Например, сначала данные Tatasteel в 9:15, а затем данные Tatamotors в 9:15 и так далее.
2. о, тогда я бы посоветовал вам перенести ваши данные в фрейм данных с 2 индексами с помощью многоиндексного приложения pandas