Извлечение столбцов из фрейма данных в новые фреймы данных по строке, содержащейся в имени столбца - PullRequest
0 голосов
/ 07 апреля 2020

У меня есть фрейм данных, который показывает данные о выработке электроэнергии и нагрузке в стране (данные можно загрузить с https://data.open-power-system-data.org/time_series/2019-06-05, и я работаю с 60-минутным набором). Из этого datafeame я хочу извлечь столбцы, относящиеся к каждой стране в наборе данных, и создать новый фрейм данных для каждой страны и назначить для фрейма данных аббревиатуру для соответствующей страны.

До сих пор я читал в необработанных данных и получил список уникальных стран из заголовков столбцов в кадре данных и сохранил их в список с именем abbv.

Я пытаюсь использовать список abbv, чтобы создать кадр данных для каждой аббревиатуры (каждый i в abbv) и заполнить созданные кадры данных столбцами из исходного кадра данных, которые содержат аббревиатуру (i в abbv) для каждой страны. ,

Я пробовал использовать для l oop до сих пор, но не совсем уверен, является ли это правильным методом или я пытаюсь использовать l oop правильным способом. Любая помощь будет оценена. Я застрял на вложенном для l oop и не уверен, куда оттуда go - я знаю, что код не работает ниже, как есть, я оставил ошибки, чтобы попытаться объяснить свой мыслительный процесс для решения этой проблемы. Спасибо.

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

#read in
data_1h = pd.read_csv('/Users/xx/Downloads/opsd-time_series-2019-06-05/time_series_60min_singleindex.csv')

#get country abbreviations
abbv = [(i[:2]) for i in data_1h.columns]
abbv = pd.unique(abbv)

#create dataframe for each country
for i in range(len(abbv)):
    for i in abbv:
        i = pd.DataFrame()
        columns = [col for col in data_1h.columns if i in col]
        i = {columns: data_1h.column}

1 Ответ

2 голосов
/ 07 апреля 2020

Я бы предложил разделить заголовки столбцов на первый символ «_», а затем превратить его в многоуровневый индекс, в котором аббревиатура страны указана в качестве первого уровня. Затем вы можете (1) разделить каждый фрейм данных по отдельности или (2) просто выбрать ту страну, которую вы хотите, как обычно, с любым другим фреймом данных.

In [3]: df.head()
Out[3]:
                                               AL_load_actual_entsoe_power_statistics  ...  UA_west_load_forecast_entsoe_transparency
utc_timestamp        cet_cest_timestamp                                                ...                              
2004-12-31T23:00:00Z 2005-01-01T00:00:00+0100                                     NaN  ...                                        NaN
2005-01-01T00:00:00Z 2005-01-01T01:00:00+0100                                     NaN  ...                                        NaN
2005-01-01T01:00:00Z 2005-01-01T02:00:00+0100                                     NaN  ...                                        NaN
2005-01-01T02:00:00Z 2005-01-01T03:00:00+0100                                     NaN  ...                                        NaN
2005-01-01T03:00:00Z 2005-01-01T04:00:00+0100                                     NaN  ...                                        NaN

[5 rows x 391 columns]

In [4]: df.columns = df.columns.str.split('_', n=1, expand=True)

In [5]: df
Out[5]:
                                                                               AL  ...                                     UA
                                              load_actual_entsoe_power_statistics  ... west_load_forecast_entsoe_transparency
utc_timestamp        cet_cest_timestamp                                            ...                                  
2004-12-31T23:00:00Z 2005-01-01T00:00:00+0100                                 NaN  ...                                    NaN
2005-01-01T00:00:00Z 2005-01-01T01:00:00+0100                                 NaN  ...                                    NaN
2005-01-01T01:00:00Z 2005-01-01T02:00:00+0100                                 NaN  ...                                    NaN
2005-01-01T02:00:00Z 2005-01-01T03:00:00+0100                                 NaN  ...                                    NaN
2005-01-01T03:00:00Z 2005-01-01T04:00:00+0100                                 NaN  ...                                    NaN
...                                                                           ...  ...                                    ...
2019-04-30T19:00:00Z 2019-04-30T21:00:00+0200                                 NaN  ...                                  487.0
2019-04-30T20:00:00Z 2019-04-30T22:00:00+0200                                 NaN  ...                                  447.0
2019-04-30T21:00:00Z 2019-04-30T23:00:00+0200                                 NaN  ...                                  410.0
2019-04-30T22:00:00Z 2019-05-01T00:00:00+0200                                 NaN  ...                                  400.0
2019-04-30T23:00:00Z 2019-05-01T01:00:00+0200                                 NaN  ...                                    NaN

[125593 rows x 391 columns]


In [7]: df['AL']
Out[7]:
                                               load_actual_entsoe_power_statistics
utc_timestamp        cet_cest_timestamp
2004-12-31T23:00:00Z 2005-01-01T00:00:00+0100                                  NaN
2005-01-01T00:00:00Z 2005-01-01T01:00:00+0100                                  NaN
2005-01-01T01:00:00Z 2005-01-01T02:00:00+0100                                  NaN
2005-01-01T02:00:00Z 2005-01-01T03:00:00+0100                                  NaN
2005-01-01T03:00:00Z 2005-01-01T04:00:00+0100                                  NaN
...                                                                            ...
2019-04-30T19:00:00Z 2019-04-30T21:00:00+0200                                  NaN
2019-04-30T20:00:00Z 2019-04-30T22:00:00+0200                                  NaN
2019-04-30T21:00:00Z 2019-04-30T23:00:00+0200                                  NaN
2019-04-30T22:00:00Z 2019-05-01T00:00:00+0200                                  NaN
2019-04-30T23:00:00Z 2019-05-01T01:00:00+0200                                  NaN

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