将NumPy数组形式的数据序列列表转换为指定维度的Pandas DataFrame
将NumPy数组形式的数据序列列表转换为指定维度的Pandas DataFrame
嘿,我明白你的问题了——你手里有个3行10列的NumPy数组,想把它转成3×3的Pandas DataFrame,但直接用pd.DataFrame(list)得到的还是3行10列的结构,对吧?这就需要先对原始数组做一些预处理,再转成DataFrame,下面分几种常见场景给你解决方案:
场景1:从每个数据序列中选取指定位置的3个元素
如果你的需求是从每个长度为10的子数组里提取出3个元素(比如前3个)来组成3×3的DataFrame,可以这么做:
import numpy as np import pandas as pd # 你的原始NumPy数组(注意变量名尽量别用list,避免和内置函数冲突) arr = np.array([[0.32689251, 0.32677079, 0.32649432, 0.32594585, 0.32532732, 0.32509514, 0.32503138, 0.32492934, 0.324797, 0.32458332], [0.32689251, 0.32677079, 0.32649432, 0.32594585, 0.32532732, 0.32509514, 0.32503138, 0.32492934, 0.324797, 0.32458332], [0.32689251, 0.32677079, 0.32649432, 0.32594585, 0.32532732, 0.32509514, 0.32503138, 0.32492934, 0.324797, 0.32458332]]) # 提取每个子数组的前3个元素(也可以换成[:, 2:5]这种指定区间,或者[:, [0,5,9]]指定索引) selected_data = arr[:, :3] # 转换为3×3的DataFrame df = pd.DataFrame(selected_data)
运行后你就能得到一个3行3列的DataFrame,每行对应原来的一个数据序列,每列是对应序列里的指定元素。
场景2:对每个数据序列做聚合生成3个统计值
如果你的需求是对每个长度为10的子数组做统计聚合(比如计算均值、最大值、最小值),用这三个聚合值来组成3×3的DataFrame,可以试试这个方法:
import numpy as np import pandas as pd arr = np.array([[0.32689251, 0.32677079, 0.32649432, 0.32594585, 0.32532732, 0.32509514, 0.32503138, 0.32492934, 0.324797, 0.32458332], [0.32689251, 0.32677079, 0.32649432, 0.32594585, 0.32532732, 0.32509514, 0.32503138, 0.32492934, 0.324797, 0.32458332], [0.32689251, 0.32677079, 0.32649432, 0.32594585, 0.32532732, 0.32509514, 0.32503138, 0.32492934, 0.324797, 0.32458332]]) # 对每个子数组计算均值、最大值、最小值,组合成3×3的数组 aggregated_data = np.column_stack([ np.mean(arr, axis=1), # 每行的均值 np.max(arr, axis=1), # 每行的最大值 np.min(arr, axis=1) # 每行的最小值 ]) # 转换为带列名的DataFrame(列名可以根据你的需求修改) df = pd.DataFrame(aggregated_data, columns=['均值', '最大值', '最小值'])
这种方式生成的DataFrame每行对应一个原始数据序列,每列是该序列的一个统计指标,完美符合3×3的维度要求。
场景3:将完整序列作为DataFrame的单元格(不推荐常规场景)
如果你的需求是把每个完整的长度10的序列作为DataFrame的一个单元格(单元格存储数组而非单个数值),可以这么构造:
import numpy as np import pandas as pd arr = np.array([[0.32689251, 0.32677079, 0.32649432, 0.32594585, 0.32532732, 0.32509514, 0.32503138, 0.32492934, 0.324797, 0.32458332], [0.32689251, 0.32677079, 0.32649432, 0.32594585, 0.32532732, 0.32509514, 0.32503138, 0.32492934, 0.324797, 0.32458332], [0.32689251, 0.32677079, 0.32649432, 0.32594585, 0.32532732, 0.32509514, 0.32503138, 0.32492934, 0.324797, 0.32458332]]) # 构造3×3的结构,这里示例将每个序列重复三次,你可以根据需求调整内容 data = [[arr[0], arr[0], arr[0]], [arr[1], arr[1], arr[1]], [arr[2], arr[2], arr[2]]] df = pd.DataFrame(data)
不过这种方式的DataFrame单元格是数组,后续数值分析会比较麻烦,所以只建议在特殊场景下使用。
备注:内容来源于stack exchange,提问作者alpa
相关产品推荐
相关产品推荐

