使用熊猫清理CSV数据

赫曼特·库玛(Hemant Kumar)

我有一个csv文件,如下所示:

                   100%Q,mean(ms),P50(ms),P99(ms),p99.9(ms),#Samples
QCT1,0.0376542  0.044935    0.090388    0.091279    1760105,,,,
QCT2,0.0489372  0.044953    0.090606    0.091422    1354230,,,,
QCT3,0.0447087  0.045008    0.046186    0.063825    123448,,,,
RCT,0.38646 0.38588 0.844293    1.01548 7295875,,,,
WCT,NA  NA  NA  NA  NA,,,,

我想清除标题上所有这些混乱的空间以及所有不必要的逗号,然后将其转换为另一个数据帧(无论它是逗号还是空格分隔的),以便我可以与另一个数据帧进行一些比较。

我已经尝试过一些事情,例如,删除几列并清理标题和所有内容,但是这是我目前使用pandas的结果:数据框在按Tab键分隔时看起来像下面:

import pandas as pd
df1=pd.read_csv("results/actual.csv",sep='\t')
df1


                         100%Q,mean(ms),P50(ms),P99(ms),p99.9(ms),#Samples
QCT1,0.03 0.05 0.09 0.09                                          5,,,,
QCT2,0.04 0.04 0.09 0.09                                          0,,,,
QCT3,0.04 0.08 0.04 0.06                                          8,,,,
RCT,0.3  0.3 0.8 1.01                                             5,,,,
WCT,NA NaN NaN NaN                                                NA,,,,

默认情况下,数据帧的进一步输出如下所示:

df2=pd.read_csv("results/actual.csv",usecols=range(0,6))
df2

100%Q mean(ms)                    P50(ms)   P99(ms)  p99.9(ms)  #Samples
QCT1  0.03\t0.05\t0.09\t0.09\t5    NaN      NaN      NaN        NaN
QCT2  0.04\t0.04\t0.09\t0.09\t0    NaN      NaN      NaN        NaN
QCT3  0.04\t0.08\t0.04\t0.06\t8    NaN      NaN      NaN        NaN
RCT   0.3\t0.3\t0.8\t0.01\t5       NaN      NaN      NaN        NaN
WCT   NA\tNA\tNA\tNA\tNA           NaN      NaN      NaN        NaN

我希望它看起来像这样:

100%Q    mean(ms)  P50(ms)   P99(ms)  p99.9(ms)  #Samples
QCT1     0.03      0.05      0.09     0.09       5
QCT2     0.04      0.04      0.09     0.09       0
QCT3     0.04      0.08      0.04     0.06       8
RCT      0.3       0.3       0.8      1.01       5
WCT      NA        NaN       NaN      NaN        NA


问题是多余的空格以及标头中的空格。有没有一种方法可以将其转换为具有通用定界符的数据帧。如果遇到这个问题并用Pandas解决了这个问题,那么有人可以帮助我,那就太好了。

注意:请忽略实际表中的值,因为我已将其调整为适合框架的格式,以使它看起来不错并且对每个人都有意义。

伊利亚

使用,分隔符读取文件,以便仅处理means(ms)列。接下来,您可以将多个空白合并为一个,' '.join(x.split())并使用将means(ms)空白所有值分割开split(' ')使用列表推导将所有结果组合到列表列表中,然后插入1:数据框的列中。

df=pd.read_csv("results/actual.csv",sep=',')
df[df.columns[1:]] = [' '.join(x.split()).split(' ') for x in df['mean(ms)']]

如果内部的值means(ms)由制表符分隔,请使用:

df[df.columns[1:]] = [x.split('\t') for x in df['mean(ms)']]

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章