Сохраните и прочитайте список данных - PullRequest
0 голосов
/ 07 октября 2019

У меня есть список с фреймами данных (каждый фрейм данных имеет одну временную шкалу, всегда начинающуюся с 0 и заканчивающуюся по-разному), которую я хотел бы сохранить как .csv: enter image description here

Я хочу быть в состоянии прочитать файл .csv в исходном формате в виде списка фреймов данных.

Поскольку я не мог понять, как сохранить список с фреймами данных, я конкатенировал список и сохранил все как одинdataframe: pd.concat(data).to_csv(csvfile)

Для чтения .csv я пробовал это: df = pd.read_csv(csvfile) Это даст расположение всех нулей zero_indices = list(df.loc[df['Unnamed: 0'] == 0].index)

Добавьте число строк к этому, чтобы получитьпоследний фрейм данных zero_indices.append(len(df))

Получение диапазонов - кортежей последовательных записей в приведенном выше списке zero_ranges = [(zero_indices[i], zero_indices[i+1]) for i in range(len(zero_indices) - 1)]

Извлечение фреймов данных в список X_test = [df.loc[x[0]:x[1] - 1] for x in zero_ranges]

Проблема Iесть то, что индекс находится в окончательном списке с фреймами данных, но на самом деле я хочу, чтобы столбец «Безымянный: 0» в окончательном списке был установлен в качестве индекса для каждого фрейма данных: enter image description here

1 Ответ

1 голос
/ 07 октября 2019

Я не совсем уверен в том, как вы хотели подойти к этому, но это то, что я понял из вашей постановки проблемы. Дайте мне знать, если это то, что вы хотели:

У нас есть два df:

>>> ee = {"Unnamed : 0" : [0,1,2,3,4,5,6,7,8],"price" : [43,43,14,6,4,2,6,4,2], "time" : [3,4,5,2,5,6,6,3,4], "hour" : [1,1,1,5,4,3,4,5,4]}
>>> one = pd.DataFame.from_dict(ee)
>>> dd = {"Unnamed : 0" : [0,1,2,3,4,5],"price" : [23,4,32,4,3,234], "time" : [3,2,4,3,2,4], "hour" : [3,4,3,2,4,4]}
>>> two = pd.DataFrame.from_dict(dd)

, который выглядит так:

print(one)
       Unnamed : 0  price  time  hour
    0            0     23     3     3
    1            1      4     2     4
    2            2     32     4     3
    3            3      4     3     2
    4            4      3     2     4
    5            5    234     4     4

print(two)
         Unnamed : 0  price  time  hour
      0            0     23     3     3
      1            1      4     2     4
      2            2     32     4     3
      3            3      4     3     2
      4            4      3     2     4
      5            5    234     4     4

Теперь объединяем эти два списка,оператор списка:

list_dfs = [one,two]
print(list_dfs)

[        Unnamed : 0  price  time  hour
     0            0     43     3     1
     1            1     43     4     1
     2            2     14     5     1
     3            3      6     2     5
     4            4      4     5     4
     5            5      2     6     3
     6            6      6     6     4
     7            7      4     3     5
     8            8      2     4     4,    
        Unnamed : 0  price  time  hour
     0            0     23     3     3
     1            1      4     2     4
     2            2     32     4     3
     3            3      4     3     2
     4            4      3     2     4
     5            5    234     4     4]

Использование функции DataFrame

set_index ()

list_dfs_index = list(map(lambda x : x.set_index("Unnamed : 0"), list_dfs))
print(list_dfs_index)

[                price  time  hour
 Unnamed : 0
    0               43     3     1
    1               43     4     1
    2               14     5     1
    3                6     2     5
    4                4     5     4
    5                2     6     3
    6                6     6     4
    7                4     3     5
    8                2     4     4,              
                 price  time  hour
 Unnamed : 0
    0               23     3     3
    1                4     2     4
    2               32     4     3
    3                4     3     2
    4                3     2     4
    5              234     4     4]

В качестве альтернативы, вы можете использовать ту же функцию set_indexустановить индекс как «Безымянный: 0», перед помещением фреймов данных в список.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...