请求提供行转列(data transpose)实现代码:特定规则数据转置需求
行转列(Data Transpose)实现代码
原始数据与目标效果说明
原始数据样例:
| 列1 | 列2 |
|---|---|
| A | 1 |
| 2 | |
| 3 | |
| B | 4 |
| 5 | |
| C | 6 |
目标效果:
| 列1 | 列2_1 | 列2_2 | 列2_3 |
|---|---|---|---|
| A | 1 | 2 | 3 |
| B | 4 | 5 | |
| C | 6 |
Python(Pandas)实现代码
import pandas as pd # 构造原始数据(可替换为实际数据读取逻辑,比如pd.read_excel/pd.read_csv) data = { '列1': ['A', '', '', 'B', '', 'C'], '列2': [1, 2, 3, 4, 5, 6] } df = pd.DataFrame(data) # 用前一个非空值填充列1的空值,生成分组标识 df['分组键'] = df['列1'].replace('', pd.NA).ffill() # 分组后将列2数据转置为多列 transposed_df = df.groupby('分组键')['列2'].apply(lambda x: pd.Series(x.values)).unstack() # 重命名列并调整结构 transposed_df.columns = [f'列2_{idx+1}' for idx in transposed_df.columns] transposed_df = transposed_df.reset_index().rename(columns={'分组键': '列1'}) # 将空值替换为空字符串(可选,根据展示需求调整) transposed_df = transposed_df.fillna('') print(transposed_df)
代码说明
- 分组标识生成:通过
ffill()方法将列1的连续空值填充为前一个非空值,把同属一个主项的行归为一组 - 行转列操作:利用
groupby分组后,将每个组的列2数据转为Series,再通过unstack()实现行转列 - 格式调整:重命名列名、重置索引,最后可选将空值替换为空字符串,让输出更贴合目标效果
内容的提问来源于stack exchange,提问作者Wardex
相关产品推荐
相关产品推荐

