我有一个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的结果: Data-frame在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问题在于额外的空格以及标题中的空格。有没有办法把它变成一个带有公共分隔符的数据帧?如果有人能帮助我解决这个问题,并与熊猫一起解决这个问题,.It就太好了。
注意:请忽略实际表格中的值,因为我已经对其进行了处理,使其适合一个框架,以便它看起来很好,对每个人都有意义。
发布于 2019-05-25 16:57:06
使用,分隔符读取文件,这样只需要处理means(ms)列。接下来,您可以使用' '.join(x.split())将多个空格合并为一个空格,并使用split(' ')按空格拆分means(ms)中的所有值。使用列表理解将所有结果组合到一个列表列表中,并插入到数据帧的列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)']]

发布于 2019-05-25 16:50:39
我知道您的列标题用逗号分隔,索引列和其他值用逗号分隔。这些值以制表符分隔。您可以使用"\t|,“分隔符读取,重命名列,然后按第一列编制索引。这是你想要的吗?我假设您的文件不包含逗号或制表符,而不是用来分隔任何内容。
df = pd.read_csv('results/actual.csv', sep='\t|,', index_col='100%Q')https://stackoverflow.com/questions/56302908
复制相似问题