[已解决] Power Query 逆透视列疑问

  [复制链接]
查看132929 | 回复132 | 2020-9-16 05:02:28 | 显示全部楼层 |阅读模式
近期开始学习power query一些基本应用。
如果只有单一的数值列要转换那还比较好办,例如以下原始表格:

货号     货名   广州    上海    北京
100001  糖果   2,883.03   1,410.73   2,847.52
100002  饮料     2,888.94   1,996.94   358.72

但如果数值不止一列,又不想数值列标题全竖放,应该怎样做呢?
9843012101471.rar (254.97 KB, 下载次数: 0)
回复

使用道具 举报

guiyang95 | 2020-9-16 05:07:28 | 显示全部楼层
用pandas的方法
  1. import pandas as pd

  2. df=pd.read_excel('PQ逆透视.xlsx')

  3. header = pd.MultiIndex.from_product([['广州','上海','北京'],['库存数量','销售成本','库存周转']])

  4. df=df.set_index(['货号','货名'])

  5. df.columns=header

  6. df=df.stack(level=0)

  7. df=df.reset_index()

  8. df.rename(columns={"level_2":"地区"})

  9. df=df[['货号','货名','库存数量','销售成本','库存周转','地区']]

  10. df.to_excel('result.xlsx',index=False)

  11. 结果



  12.    货号货名   库存数量  销售成本   库存周转地区

  13. 0100001糖果1410.7328166.277769 8.484194上海

  14. 3100002饮料1996.9446 32.20603162.005300上海

  15. 6100003大米 0.0000  0.000000  NaN上海

  16. 1100001糖果2847.5226233.17782312.211807北京

  17. 4100002饮料 358.7153 38.340862 9.355953北京

  18. 7100003大米 0.0000  0.000000  NaN北京

  19. 2100001糖果2883.0297273.23988510.551277广州

  20. 5100002饮料2888.9401 76.23692337.894238广州

  21. 8100003大米2892.3095  0.000000  NaN广州





复制代码
回复

使用道具 举报

open168 | 2020-9-16 05:12:28 | 显示全部楼层
先逆透视后9列,然后把“属性”分列成地区和描述列,然后再透视描述列
  1. let

  2.   Source = Excel.CurrentWorkbook(){[Name="表1"]}[Content],

  3.   #"Replaced Errors" = Table.ReplaceErrorValues(Source, List.Transform(Table.ColumnNames(Source), each {_,null})),

  4.   #"Unpivoted Columns" = Table.UnpivotOtherColumns(#"Replaced Errors", {"货号", "货名"}, "属性", "值"),

  5.   #"Split Column by Position" = Table.SplitColumn(#"Unpivoted Columns", "属性", Splitter.SplitTextByPositions({0, 2}, false), {"地区", "描述"}),

  6.   #"Pivoted Column" = Table.Pivot(#"Split Column by Position", List.Distinct(#"Split Column by Position"[描述]), "描述", "值", List.Sum),

  7.   #"Sorted Rows" = Table.Sort(#"Pivoted Column",{{"地区", Order.Ascending}})

  8. in

  9.   #"Sorted Rows"
复制代码
回复

使用道具 举报

nasony | 2020-9-16 05:21:28 | 显示全部楼层
有几列选几列就能实现吧。。
回复

使用道具 举报

ahwx | 2020-9-16 05:22:29 | 显示全部楼层
用pandas的方法


这个太复杂了,不懂编写。谢谢答复。
回复

使用道具 举报

graven | 2020-9-16 05:28:29 | 显示全部楼层
先逆透视后9列,然后把“属性”分列成地区和描述列,然后再透视描述列


嗯,也有想过这个方法。只是想问问大家有没有在PQ中编辑时就能形成的方法,谢谢你。
回复

使用道具 举报

whilterwolf2003 | 2020-9-16 05:34:29 | 显示全部楼层
嗯,也有想过这个方法。只是想问问大家有没有在PQ中编辑时就能形成的方法,谢谢你。


我用的方法不是PQ?
回复

使用道具 举报

莲子 | 2020-9-16 05:37:29 | 显示全部楼层
你这个数据也不是数据透视后的结果啊,怎么逆透视
回复

使用道具 举报

lzy6796 | 2020-9-16 05:45:30 | 显示全部楼层
我先逆透视列9列,再用添加自定义列的方法将属性列分成地区列和描述列,最后做成数据透视表,和楼主的要求还是差了点,我不会传表格文件,

地区    货号    货名    库存数量    库存周转    销售成本    总计
广州    100001    糖果    2883.0297    10.55127696    273.2398846    3166.820862
    100002    饮料    2888.9401    37.8942379    76.23692308    3003.071261
    100003    大米    2892.3095        0    2892.3095
北京    100001    糖果    2847.5226    12.21180712    233.1778231    3092.91223
    100002    饮料    358.7153    9.355953038    38.34086154    406.4121146
上海    100001    糖果    1410.7328    8.484193687    166.2777692    1585.494763
    100002    饮料    1996.9446    62.00530001    32.20603077    2091.155931
总计            15278.1946    140.5027687    819.4792923    16238.17666
回复

使用道具 举报

米兰天地 | 2020-9-16 05:48:30 | 显示全部楼层
第一次练习pq,处理成这样,行吗?
9843012101472.rar (258.05 KB, 下载次数: 0)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则