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