将Pandas DataFrame中的数组转为列,实现18×1到18×18的结构转换
解决方法
假设你的原始DataFrame列名为arrays(如果不是,替换成你实际的列名),可以用两种简单方法实现转换:
方法一:高效的列表转换法
先把列中的每个数组转成列表,再直接构造新的DataFrame:
import pandas as pd # 假设你的原始DataFrame是df new_df = pd.DataFrame(df['arrays'].tolist()) # 可选:给新DataFrame设置自定义列名 new_df.columns = [f'column_{i+1}' for i in range(18)]
方法二:apply展开法
用apply(pd.Series)把每行的数组拆分成列:
new_df = df['arrays'].apply(pd.Series)
示例演示
如果还没创建测试数据,可以用这段代码模拟你的场景:
import pandas as pd import numpy as np # 生成18行1列的DataFrame,每行是长度18的随机数组 df = pd.DataFrame({ 'arrays': [np.random.rand(18) for _ in range(18)] }) # 转换为18×18的DataFrame new_df = pd.DataFrame(df['arrays'].tolist())
转换后,new_df就是你需要的18行18列结构——每行对应原DataFrame该行的数组元素,每列对应数组的每个位置值。
内容的提问来源于stack exchange,提问作者As18
相关产品推荐
相关产品推荐

