Python-pandas将一些列转换为行

发布于 2021-02-02 18:07:29

我的数据集具有n个日期的位置信息。问题在于每个日期实际上是一个不同的列标题。例如,CSV看起来像

location    name    Jan-2010    Feb-2010    March-2010
A           "test"  12          20          30
B           "foo"   18          20          25

我想要的是它看起来像

location    name    Date        Value
A           "test"  Jan-2010    12       
A           "test"  Feb-2010    20
A           "test"  March-2010  30
B           "foo"   Jan-2010    18       
B           "foo"   Feb-2010    20
B           "foo"   March-2010  25

问题是我不知道列中有多少个日期(尽管我知道它们总是以名字开头)

关注者
0
被浏览
96
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    从v0.20开始,melt是一阶函数,你现在可以使用

    df.melt(id_vars=["location", "name"], 
            var_name="Date", 
            value_name="Value")
    
      location    name        Date  Value
    0        A  "test"    Jan-2010     12
    1        B   "foo"    Jan-2010     18
    2        A  "test"    Feb-2010     20
    3        B   "foo"    Feb-2010     20
    4        A  "test"  March-2010     30
    5        B   "foo"  March-2010     25
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看