我有一个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] 删除。
我来说两句