重构csv文件中的数据

时间:2015-03-29 23:10:07

标签: python python-2.7 csv pandas beautifulsoup

我编写了一个脚本,从网页上收集链接列表,然后抓取一个包含每个链接数据的表格,这些链接都运行良好。

我的下一个工作是将表格重组为我最终目标的更有意义的安排。我甚至不确定我想做什么的术语所以我会尝试用一个例子来解释。

我有50个奇怪的文件是使用我上面提到的练习创建的,如下所示:

            Identifier, Data1, Data2, Data3
            abc,x,x,x
            def,x,x,x
            ghi,x,x,x

我希望每个数据标题与其值一起成为表的一部分,如下所示:

            Identifier, Measure, Value
            abc, Data1, x
            def, Data1, x
            ghi, Data1, x               
            abc, Data2, x
            def, Data2, x
            ghi, Data2, x               
            abc, Data3, x
            def, Data3, x
            ghi, Data3, x               
            abc, Data4, x
            def, Data4, x
            ghi, Data4, x               

手动操作非常简单,但使用30-50个文件时可能会有点繁琐(这是我每隔几个月就要完成的一项任务)。我不确定合并我的工作表会更快(但是有些工作表包含额外的标题),单独执行此任务,然后在抓取数据后将数据合并到甚至构造我想要的数据。

希望这是有道理的。任何帮助将不胜感激,我很乐意澄清任何事情!感谢。

1 个答案:

答案 0 :(得分:2)

您可以使用pandas.melt

>>> df
  Identifier  Data1  Data2  Data3
0        abc      1      4      7
1        def      2      5      8
2        ghi      3      6      9

>>> pd.melt(df, id_vars='Identifier', 
...         value_vars=['Data1', 'Data2', 'Data3'], 
...         var_name='Measure', value_name='Value')

  Identifier Measure  Value
0        abc   Data1      1
1        def   Data1      2
2        ghi   Data1      3
3        abc   Data2      4
4        def   Data2      5
5        ghi   Data2      6
6        abc   Data3      7
7        def   Data3      8
8        ghi   Data3      9