Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 多个阵列到数据帧_Arrays_Pandas_Numpy - Fatal编程技术网

Arrays 多个阵列到数据帧

Arrays 多个阵列到数据帧,arrays,pandas,numpy,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

因此,我在一个字典中迭代,并将一组值作为一个数组取出——尝试将每个观察值作为一个单独的行生成一个数据帧

     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]
   ....
同样,问题是如何在单个数据帧中捕获所有这些阵列,使其如下所示:

   [[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数组。
谢谢

我希望下面提到的代码能帮助您:

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"])

只需创建一个临时数组并将该数组附加到列表中,就可以使其更具动态性。以及从生成的数组列表创建数据帧。此外,您可以为列添加名称(如上所示)或避免命名它们(只需删除列细节)。我希望这能解决您的问题

在第二行声明一个空的数据帧,即使用code
df=pd.dataframe()
X1=[]
下面声明一个空的数据帧。接下来,在
IF
语句中,在将值附加到
X1
之后传递以下内容:

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

df=pd.DataFrame(np.NaN,index=range(3),columns=range(9))
对于范围(3)中的i:

df.iloc[i,:]=np.random.randint(9)#谢谢,我曾尝试过类似的方法,但他在转置时使用--“仅对唯一值的索引对象重新索引有效”,然后用已知的
shape
NaN
值声明一个数据帧。稍后使用
iloc
命令填充它。请稍后删除不必要的行。请提供一个示例,我没有得到它。请检查我修改的答案。如果您事先知道数组的数量,然后在
index=range(number\u of\u array)
中传递值,现在尝试上面的错误是--“只有大小为1的数组才能转换为Python标量”编辑问题现在,我有超过500K个数组。为了正确理解它,您有500个,000个数组,每个数组有多少个元素?元素的数量不同,但目前我只看len==10。
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