Python中实现numpy一维数组转多维及DataFrame列批量拆分
解决方案
问题回顾
原DataFrame结构:
| df |
|---|
| [0,1,2] |
| [3,4,5] |
期望转换后的结构:
| df1 | df2 | df3 |
|---|---|---|
| [0] | [1] | [2] |
| [3] | [4] | [5] |
你用np.split(df.iloc[0],3)能处理单行,但批量处理失败,以下是两种可行的批量解决方案:
方法一:先拆分列表为普通列,再转为单元素列表
先将原列中的列表拆分为多列(每个单元格为单个值),再把每个值包裹成单元素列表:
import pandas as pd # 假设原DataFrame定义如下 df = pd.DataFrame({'df': [[0,1,2], [3,4,5]]}) # 第一步:拆分列表为普通列 temp_df = pd.DataFrame(df['df'].tolist(), columns=['df1', 'df2', 'df3']) # 第二步:将每个单元格的值转为单元素列表 result_df = temp_df.applymap(lambda x: [x])
方法二:通过apply直接拆分并生成列表列
利用apply遍历每行的列表,直接生成包含单元素列表的Series,再组合为DataFrame:
import pandas as pd df = pd.DataFrame({'df': [[0,1,2], [3,4,5]]}) result_df = df['df'].apply( lambda lst: pd.Series([[lst[0]], [lst[1]], [lst[2]]]) ).rename(columns={0: 'df1', 1: 'df2', 2: 'df3'})
两种方法都能批量处理所有行,最终得到你需要的DataFrame结构。
内容的提问来源于stack exchange,提问作者Lavenia A
相关产品推荐
相关产品推荐

