如何调整ndarray维度以成功创建Pandas DataFrame?
解决pandas DataFrame创建时的维度不匹配问题
问题场景
从字典创建pandas DataFrame时,字典内包含两个ndarray,形状分别为(325,)和(325,1),运行代码触发如下错误:
ValueError: Per-column arrays must each be 1-dimensional
调整数组维度的两种可行方案
只需将两个数组的维度统一,就能成功创建DataFrame,以下是两种常用方法:
方案1:把(325,1)的二维数组降为一维
通过numpy的ravel()、flatten()方法或索引切片实现:
import pandas as pd import numpy as np # 假设字典名为data_dict,其中一个数组对应键为'col_a'(一维),另一个为'col_b'(二维) data_dict['col_b'] = data_dict['col_b'].ravel() # 替代写法:data_dict['col_b'].flatten() 或 data_dict['col_b'][:, 0] df = pd.DataFrame(data_dict)
方案2:把(325,)的一维数组升为二维
通过numpy的reshape()方法或np.newaxis实现:
import pandas as pd import numpy as np # 假设字典名为data_dict,'col_a'是一维数组,'col_b'是二维数组 data_dict['col_a'] = data_dict['col_a'].reshape(-1, 1) # 替代写法:data_dict['col_a'][:, np.newaxis] df = pd.DataFrame(data_dict)
补充说明
两种方案都能满足pandas的要求,更推荐方案1,因为DataFrame的列本质是一维数据结构,降维处理更贴合实际使用场景。
内容的提问来源于stack exchange,提问作者PW14
相关产品推荐
相关产品推荐

