多个数组到数据框熊猫

时间:2018-12-04 23:54:20

标签: arrays pandas numpy

因此,我正在遍历字典,并将一堆值作为数组取出-试图将每个观察值作为一个单独的行制作一个数据框。

     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

同一任务是否可以进一步划分? 数据集中还有更多的50万个数组。 谢谢

2 个答案:

答案 0 :(得分:0)

我希望以下提到的代码对您有所帮助:

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并将该数组附加到列表中来使其更加动态。从生成的数组列表中创建数据框。另外,您可以为列添加名称(如上所示)或避免命名(只需删除列详细信息)。希望能解决您的问题

答案 1 :(得分:0)

在第二行(即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