如何对Pandas DataFrame执行透视得到指定横向宽表格式
解决方案
你要做的是长表转宽表操作,和pd.melt()(宽表转长表)对应的常用实现方法是pd.pivot(),具体操作步骤如下:
方法1:使用pivot实现(最通用)
完整代码示例
import pandas as pd # 构造你的原始DataFrame df = pd.DataFrame({ "Column1": ["A", "A", "B", "B"], "Column2": [1, 2, 3, 4] }) # 1. 给相同Column1分组下的行生成顺序编号,用来对应后续的Column4、Column5 df["group_seq"] = df.groupby("Column1").cumcount() + 1 # 2. 执行pivot转换为宽表 res = df.pivot( index="Column1", columns="group_seq", values="Column2" ).reset_index() # 3. 重命名列名匹配你的需求 res.columns = ["Column3", "Column4", "Column5"] print(res)
输出结果
Column3 Column4 Column5 0 A 1 2 1 B 3 4
方法2:使用groupby聚合实现(写法更简洁)
如果你的场景中每个Column1分组下的数值数量固定,也可以用聚合后拆列的写法:
res = df.groupby("Column1")["Column2"]\ .agg(list)\ .apply(pd.Series)\ .reset_index() res.columns = ["Column3", "Column4", "Column5"]
得到的结果和方法1完全一致,单分组下数值数量不一致时会自动填充NaN值。
内容的提问来源于stack exchange,提问作者Basir Miah
相关产品推荐
相关产品推荐

