Pandas:传递值的形状为(10,1),当尝试将dict附加到现有Dataframe时,索引暗示(10,5)错误

z4bn682m  于 2023-01-07  发布在  其他
关注(0)|答案(1)|浏览(185)

现在我有一个DataFrame,看起来像这样:

A         B
0   aa       bbbb
1  aaa        bb
2   a         bb

和一个这样的数组:

[array([0.49, 0.43, 0.06], dtype=float32),
 array([0.5, 0.47 , 0.02], dtype=float32),
 array([0.04, 0.34, 0.6], dtype=float32)]

我想把这个值加到我原来的df上,所以我先把数组转换成dict,然后我试着把它附加到我原来的df上:

mydict={}
for index, i in enumerate(array):
    mydict[index]=f"{i}"
 df_new = pd.concat([df[:3], pd.DataFrame(mydict.values(), columns=['A', 'B','C','D','E'])], ignore_index=True)

这就是我想要达到的目标:

A     B      C     D     E
0   aa    bbbb   0.49  0.43  0.06
1  aaa     bb    0.5   0.47  0.02
2   a      bb    0.04  0.34  0.6

但这是我得到的错误:

Shape of passed values is (10, 1), indices imply (10, 5)
tvokkenx

tvokkenx1#

准备数据

import numpy as np
import pandas as pd

df = pd.DataFrame({'A': ['aa', 'aaa', 'a'], 'B': ['bbbb', 'bb', 'bb']})

array = [np.array([0.49, 0.43, 0.06], dtype=np.float32), 
 np.array([0.5, 0.47, 0.02], dtype=np.float32), 
 np.array([0.04, 0.34, 0.6], dtype=np.float32)]

您可以将数组列表直接转换为 Dataframe ,而不是在转换为 Dataframe 之前将其转换为字典。

df2 = pd.DataFrame(array, columns=['C', 'D', 'E'])
pd.concat([df, df2], axis=1)

      A     B      C       D       E
0    aa  bbbb   0.49    0.43    0.06
1   aaa    bb   0.50    0.47    0.02
2     a    bb   0.04    0.34    0.60

相关问题