【问题标题】:how to transpose multiple column parameters without double counting如何在不重复计算的情况下转置多个列参数
【发布时间】:2018-06-18 20:25:32
【问题描述】:

我正在尝试将具有不同参数的多列转换为两列。我尝试了 Stackoverflow 上不同帖子中提到的不同方法,但结果总是给我重复的值,因此重复计算。任何帮助将非常感激。

这是原始数据:

这是我想要的最终原始数据的格式:

谢谢!

【问题讨论】:

  • 欢迎来到 SO。请以文本形式包含您的数据(无图像/链接)并指出您已经尝试过的内容。另请参阅minimal reproducible example

标签: excel python-3.x pandas


【解决方案1】:

使用pd.wide_to_long:

pd.wide_to_long(df,
                ['Geo','Target Geo'],
                ['Name','ID','user_name','platform','ID2','Placement Name','ID3'],
                j='Codes',
                sep=' ',
                suffix='.')\
  .reset_index()\
  .drop('Codes',axis=1)

输出:

  Name   ID user_name platform  ID2 Placement Name    ID3 Global Target Global Geo  Target Geo
0  ABC  123       sky     blah  456             RV  56789                       US         9.0
1  ABC  123       sky     blah  456             RV  56789                       UK        10.0
2  ABC  123       sky     blah  456             RV  56789                       CN         9.0
3  ABC  123       sky     blah  456             FS  98765                       US         8.5
4  ABC  123       sky     blah  456             FS  98765                       UK         4.0
5  ABC  123       sky     blah  456             FS  98765                       DE         3.6

【讨论】:

  • 非常感谢斯科特。但由于某种原因,目标值仍然没有被转置。我只在 Target Geo 中得到 Nan。我使用了确切的代码。你知道为什么吗?
  • 检查列标题是否有空格。使用 df.to_dict() 帮助识别。
猜你喜欢
  • 2012-03-28
  • 2012-07-13
  • 1970-01-01
  • 2017-01-18
  • 2010-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-28
相关资源
最近更新 更多