2016-12-09 3 views
0

У меня есть серия pandas и функция, которая принимает значение в серии и возвращает dataframe. Есть ли способ применить функцию к серии и естественным образом сопоставить результаты?Сопоставьте каждое значение в серии pandas/dataframe с n> 1 измерениями

Я действительно пытаюсь использовать pandas series/multiindex, чтобы отслеживать результаты на каждом этапе моего анализа данных, где multiindex содержит параметры, используемые для получения значений. Например, серия (s ниже) является результатом этапа 0 в моем конвейере анализа данных. На шаге 1 я хочу попробовать еще несколько измерений (2 ниже, таким образом, dataframe) и сопоставить результаты в другой серии.

Можем ли мы работать лучше, чем ниже? Где звонки stack() кажутся немного чрезмерными. Будет ли библиотека xarray подходящей для моего использования?

In [112]: s 
Out[112]: 

a 0 
b 1 
c 2 
dtype: int64 

In [113]: d = s.apply(lambda x: pd.DataFrame([[x,x*2],[x*3,x*4]]).stack()).stack().stack() 

In [114]: d 
Out[114]: 

a 0 0 0 
     1 0 
    1 0 0 
     1 0 
b 0 0 1 
     1 3 
    1 0 2 
     1 4 
c 0 0 2 
     1 6 
    1 0 4 
     1 8 
dtype: int64 

ответ

0

Это должно дать вам DataSet 2D-массивов, и выровнять их для вас. Возможно, вы захотите установить размеры ранее, если хотите, чтобы их называли определенным способом/имели определенный размер.

xr.Dataset(k: func(v) for k, v in series.items())