Самый простой способ преобразовать вложенный список из 31 кадра данных в 31 отдельный кадр данных - PullRequest
0 голосов
/ 11 июля 2019

У меня большой список, состоящий из 31 вложенных фреймов данных.Каждый фрейм данных списка имеет две строки: метка времени и данные измерений.Я хочу преобразовать их в отдельные кадры данных.

Снимок экрана большого списка enter image description here

biglist = [list1,list2,.........list31]

df1 = biglist[0]
.
.
df31 = biglist[30]
print(df1)
02/01/2019 09:30:23.000    26.77196
02/01/2019 10:10:32.000    59.66217
02/01/2019 10:50:32.000    85.40406
02/01/2019 11:30:32.000    61.95119

Теперь я набираю для этого 31 строку.Есть ли самый простой способ сделать это?использовать для цикла?и т. д.

Исходя из принятого ниже ответа от @ WeNYoBen, я использую словарь для вызова каждого фрейма данных.Для перебора словаря я делаю это

df=dict(enumerate(biglist1[1]))
    for i,x in df:
#        print(i,x)
        df[i] = df[i].apply(pd.to_numeric)
        df[i].index = pd.to_datetime(df[i].index)

Работает успешно, без ошибок.Теперь я хочу объединить данные только с 24 кадров.Код

df[0]['time']=df[0].index  ### considering POA as reference dataframe
df[0]['time'] = df[0]['time'].apply(pd.to_datetime) # print(df[0].index) # print(dfm24.index) dfm1.dtypes
l=[]
s1 = []
for i,x in enumerate(df):           ## dfm24.duplicated(subset=None, keep='first')
    s1=df[0].reindex(df[i].index,method='nearest')
    b = 1
    if i>8:
        b = 2
    if i==1:
        l.append(s1.join(df[i]).set_index('time').add_suffix(df[i].columns[0][-b:]))
    if (i > 1) & (i<25):
        l.append(s1.join(df[i]).set_index('time').reindex(l[0].index,method='nearest').add_suffix(df[i].columns[0][-b:]))
combdf = pd.concat(l,1) # combdf.dtypes

Этот код успешно работает без ошибок.

1 Ответ

1 голос
/ 11 июля 2019

Это не безопасно, но работает

variables = locals()

for i,j in enumerate(biglist) :
    variables["df{0}".format(i+1)] = j

Более безопасный способ - сохранить его в диктовку

d=dict(enumerate(biglist))
d[0]

Обновление

df=dict(enumerate(biglist1))
for i,x in df:
    print(i,x)
    df[i] = df[i].apply(pd.to_numeric)
    df[i].index = pd.to_datetime(df[i].index)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...