множественный массив в панде данных - PullRequest
0 голосов
/ 05 декабря 2018

Итак, я перебираю словарь и вынимаю кучу значений в виде массива - пытаюсь создать Dataframe с каждым наблюдением в виде отдельной строки.

     X1 =[]
     for k,v in DF_grp:
         date = v['Date'].astype(datetime)
         usage = v['Usage'].astype(float)
         comm = v['comm'].astype(float)
         mdf = pd.DataFrame({'Id' : k[0],'date':date,'usage':usage, 'comm':comm})
         mdf['used_ratio'] = ((mdf['used']/mdf['comm']).round(2))*100 
         ts = pd.Series(mdf['usage'].values, index=mdf['date']).sort_index(ascending=True)
         ts2 = pd.Series(mdf['used_ratio'].values, index = mdf['date']).sort_index(ascending=True)
         ts2 = ts2.dropna() 
         data = ts2.values.copy()
         if len(data) == 10:
            X1 =np.append(X1,data, axis=0)
            print(X1)
   [0,0,0,0,1,0,0,0,1]
   [1,2,3,4,5,6,7,8,9]
   [0,5,6,7,8,9,1,2,3]
   ....

аналогично, поэтому вопроскак мне собрать все эти массивы в один DataFrame, чтобы он выглядел следующим образом:

   [[0,0,0,0,1,0,0,0,1]] --- #row 1 in dataframe 
   [[1,2,3,4,5,6,7,8,9]] --- #row 2 in dataframe

Если эту задачу можно разделить дальше?В наборе данных есть больше благодарных 500K массивов.Спасибо

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

Объявите пустой фрейм данных во второй строке, т.е. ниже X1=[] с кодом df = pd.DataFrame().Затем, внутри вашего оператора IF передайте следующие значения после добавления значений к X1:

df = pd.concat([df, pd.Series(X1)]).T

Или,

df = pd.DataFrame(np.NaN, index=range(3), columns=range(9))
for i in range(3):
    df.iloc[i,:] = np.random.randint(9)    # <----- Pass X1 here
df
#     0 1   2   3   4   5   6   7   8
# 0 4.0 4.0 4.0 4.0 4.0 4.0 4.0 4.0 4.0
# 1 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0
# 2 8.0 8.0 8.0 8.0 8.0 8.0 8.0 8.0 8.0
0 голосов
/ 05 декабря 2018

Надеюсь, приведенный ниже код поможет вам:

arr2 = [0,0,0,0,1,0,0,0,1]
arr3 = [1,2,3,4,5,6,7,8,9]
arr4 = [0,5,6,7,8,9,1,2,3]

li = [arr2, arr3, arr4]
pd.DataFrame(data = li, columns= ["c1", "c2", "c3", "c4", "c5","c6", "c7", "c8", "c9"])

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

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