代码之家  ›  专栏  ›  技术社区  ›  cs95 abhishek58g

如何在使用pd复制数据帧时处理自定义命名索引。读取剪贴板?

  •  2
  • cs95 abhishek58g  · 技术社区  · 8 年前

    考虑到其他问题的数据框架:

             Constraint Name    TotalSP       Onpeak    Offpeak
    Constraint_ID               
    77127   aaaaaaaaaaaaaaaaaa  -2174.5     -2027.21    -147.29
    98333   bbbbbbbbbbbbbbbbbb  -1180.62    -1180.62     0
    1049    cccccccccccccccccc  -1036.53    -886.77     -149.76
    

    似乎有一个索引 Constraint_ID . 当我试着用 pd.read_clipboard

          Constraint                Name  TotalSP   Onpeak  Offpeak
    0  Constraint_ID                 NaN      NaN      NaN      NaN
    1          77127  aaaaaaaaaaaaaaaaaa -2174.50 -2027.21  -147.29
    2          98333  bbbbbbbbbbbbbbbbbb -1180.62 -1180.62     0.00
    3           1049  cccccccccccccccccc -1036.53  -886.77  -149.76
    

    这显然是错误的。我怎样才能纠正这个问题?

    2 回复  |  直到 8 年前
        1
  •  5
  •   user2285236    8 年前

    read_clipboard

    df = pd.read_clipboard(sep='\s{2,}')
    
    df
    Out: 
                      Constraint Name  TotalSP   Onpeak  Offpeak
    Constraint_ID                                               
    77127          aaaaaaaaaaaaaaaaaa -2174.50 -2027.21  -147.29
    98333          bbbbbbbbbbbbbbbbbb -1180.62 -1180.62     0.00
    1049           cccccccccccccccccc -1036.53  -886.77  -149.76
    

    index_col 参数还可用于告诉pandas第一列是索引,以防无法仅从分隔符推断结构:

    df = pd.read_clipboard(index_col=0, sep='\s{2,}')
    
        2
  •  2
  •   JohnE    8 年前

    这并不像ayhan的回答那么酷,但大多数时候效果很好。假设您使用的是ipython或jupyter,只需将数据复制并粘贴到 %%file

    然后做一些快速编辑。对于多索引,只需将索引上移一行,类似这样(在这种情况下,还将“约束ID”缩短为“ID”以节省一点空间):

    %%file foo.txt
    ID       Constraint Name    TotalSP       Onpeak    Offpeak
    77127   aaaaaaaaaaaaaaaaaa  -2174.5     -2027.21    -147.29
    98333   bbbbbbbbbbbbbbbbbb  -1180.62    -1180.62     0
    1049    cccccccccccccccccc  -1036.53    -886.77     -149.76
    
    pd.read_fwf('foo.txt')
    Out[338]: 
          ID     Constraint Name  TotalSP   Onpeak  Offpeak
    0  77127  aaaaaaaaaaaaaaaaaa -2174.50 -2027.21  -147.29
    1  98333  bbbbbbbbbbbbbbbbbb -1180.62 -1180.62     0.00
    2   1049  cccccccccccccccccc -1036.53  -886.77  -149.76
    

    read_fwf 通常在这样的表格中效果很好,正确处理列名中的空格(通常)。当然,您也可以将此基本方法用于 read_csv .