用换行将文本表读取到DataFrame中

时间:2019-07-26 13:45:18

标签: python pandas dataframe

我想读取文本文件表作为DataFrame。

我有一些文本文件,其中包含表的表示形式,但是有一些换行符,例如

clock_name         total_pwr     leakage_pwr
NA*                3.0675e-05    3.0675e-05
CLK1 (1.3333e+02)  6.8333e-02    6.0083e-03
LONGCLKNAME (3.3333e+02)
                   2.5707e-03    2.0459e-04     
LONGCLKNAME2 (3.3333e+02)
                   1.8777e-03    1.4462e-04     
CLK2 (3.3333e+02)   1.4190e-03    1.1886e-04    
CLK3 (3.3333e+02)
                   1.1038e-03    9.3498e-05  

当前,我将表逐行读取为字符串,并尝试使用to_csv将其直接转换为DataFrame。字符串将是:

string = "clock_name         total_pwr     leakage_pwr    \n\
NA*                3.0675e-05    3.0675e-05\n\
CLK1 (1.3333e+02)  6.8333e-02    6.0083e-03\n\
LONGCLKNAME\n\
 (3.3333e+02)  2.5707e-03    2.0459e-04\n\
LONGCLKNAME2\n\
 (3.3333e+02)  1.8777e-03    1.4462e-04\n\
CLK2 (3.3333e+02)   1.4190e-03    1.1886e-04\n\
CLK3 (3.3333e+02)  1.1038e-03    9.3498e-05"

所以我尝试了:

df = pd.read_csv(StringIO(string), sep='\t')

我想要以下内容:

   clock_name         total_pwr     leakage_pwr
0        NA*                3.0675e-05    3.0675e-05
1        CLK1 (1.3333e+02)  6.8333e-02    6.0083e-03
2  LONGCLKNAME (3.3333e+02)  2.5707e-03    2.0459...
3  LONGCLKNAME2 (3.3333e+02)  1.8777e-03    1.446...
4       CLK2 (3.3333e+02)   1.4190e-03    1.1886e-04
5        CLK3 (3.3333e+02)  1.1038e-03    9.3498e-05

但得到:

  clock_name         total_pwr     leakage_pwr
0      NA*                3.0675e-05    3.0675e-05
1      CLK1 (1.3333e+02)  6.8333e-02    6.0083e-03
2                                      LONGCLKNAME
3           (3.3333e+02)  2.5707e-03    2.0459e-04
4                                     LONGCLKNAME2
5           (3.3333e+02)  1.8777e-03    1.4462e-04
6     CLK2 (3.3333e+02)   1.4190e-03    1.1886e-04
7      CLK3 (3.3333e+02)  1.1038e-03    9.3498e-05

我该如何处理换行符?

1 个答案:

答案 0 :(得分:0)

好吧,我将向您展示一个非常丑陋的代码,如果您提供的示例中的陈述具有代表性,则可以使用。我可以重构代码,但是以后可以要求重构。

load csv

这是上面的代码生成的输出:

enter image description here

只要您的数据没有意外(超出发布的范围),这应该可以解决问题。该代码虽然很丑陋,但希望能有所帮助:)