如何将SQL表数据通过Pivot转换为每个NAME对应一行?
嘿,我明白你要把每个产品的多条分层记录合并成单行的需求了,这在数据整理里是很常见的场景。我已经帮你把给定的数据转换成宽表格式,直接用Markdown表格呈现出来:
转换后的宽表数据
| NAME | LAY_1_TYPE | LAY_1_DEPTH | LAY_2_TYPE | LAY_2_DEPTH | LAY_3_TYPE | LAY_3_DEPTH | LAY_4_TYPE | LAY_4_DEPTH |
|---|---|---|---|---|---|---|---|---|
| 32_42_1 | A | 99.4 | D | 427.2 | X | 120.4 | B | 27 |
| 32_42_2 | A | 150.4 | D | 427.2 | X | 121.4 | C | 40 |
| 32_42_3 | F | 80.97 | Y | 300.2 | C | 123.4 | C | 120 |
如果你以后遇到类似的批量数据需要处理,用Python的Pandas库可以快速实现这个转换,给你写个示例代码参考:
import pandas as pd # 模拟你的原始数据 raw_data = [ ["32_42_1", "LAY_1", "A", 99.4], ["32_42_1", "LAY_2", "D", 427.2], ["32_42_1", "LAY_3", "X", 120.4], ["32_42_1", "LAY_4", "B", 27], ["32_42_2", "LAY_1", "A", 150.4], ["32_42_2", "LAY_2", "D", 427.2], ["32_42_2", "LAY_3", "X", 121.4], ["32_42_2", "LAY_4", "C", 40], ["32_42_3", "LAY_1", "F", 80.97], ["32_42_3", "LAY_2", "Y", 300.2], ["32_42_3", "LAY_3", "C", 123.4], ["32_42_3", "LAY_4", "C", 120], ] # 转换成DataFrame df = pd.DataFrame(raw_data, columns=["NAME", "LAYER", "TYPE", "DEPTH"]) # 透视转换为宽表 wide_table = df.pivot(index="NAME", columns="LAYER", values=["TYPE", "DEPTH"]) # 重命名列名,让格式更清晰 wide_table.columns = [f"{layer}_{col}" for col, layer in wide_table.columns] # 重置索引,把NAME变回普通列 wide_table = wide_table.reset_index() # 输出Markdown格式的结果 print(wide_table.to_markdown(index=False))
内容的提问来源于stack exchange,提问作者Moffen
相关产品推荐
相关产品推荐

