英文:
Pandas: Shape of passed values is (10, 1), indices imply (10, 5) error when trying to append a dict to an existing Dataframe
问题
mydict = {}
for index, i in enumerate(array):
    mydict[index] = f"{i}"
df_new = pd.concat([df[:3], pd.DataFrame(mydict.values(), columns=['C', 'D', 'E'])], axis=1)
这是您想要的结果:
    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
这个错误是由于您的DataFrame形状不匹配引起的,您的原始DataFrame有两列('A'和'B'),而您尝试附加的DataFrame有三列('C'、'D'和'E')。我已经修改了代码以匹配您的预期结果。
英文:
Right now I've a DataFrame that looks like this:
    A         B
0   aa       bbbb
1  aaa	      bb
2   a         bb
And an array like this:
[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)]
I'd like to add this value to my original df. So I first converted my array to a dict and then I tried to append it to my original 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)
This is what I'd like to achieve:
     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
But this is the error I'm getting:
Shape of passed values is (10, 1), indices imply (10, 5)
答案1
得分: 1
准备数据
```python
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
英文:
Preparing the data
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)]
You can convert the list of arrays directly to a dataframe, instead of converting it to a dictionary before converting to 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
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。


评论