首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于Pandas的CSV数据清洗

基于Pandas的CSV数据清洗
EN

Stack Overflow用户
提问于 2019-05-25 15:52:18
回答 2查看 1.2K关注 0票数 1

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

代码语言:javascript
复制
                   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键分隔时看起来如下所示:

代码语言:javascript
复制
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,,,,

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

代码语言:javascript
复制
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

我希望它看起来像这样:

代码语言:javascript
复制
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就太好了。

注意:请忽略实际表格中的值,因为我已经对其进行了处理,使其适合一个框架,以便它看起来很好,对每个人都有意义。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-25 16:57:06

使用,分隔符读取文件,这样只需要处理means(ms)列。接下来,您可以使用' '.join(x.split())将多个空格合并为一个空格,并使用split(' ')按空格拆分means(ms)中的所有值。使用列表理解将所有结果组合到一个列表列表中,并插入到数据帧的列1:中。

代码语言:javascript
复制
df=pd.read_csv("results/actual.csv",sep=',')
df[df.columns[1:]] = [' '.join(x.split()).split(' ') for x in df['mean(ms)']]

如果您在means(ms)中的值是通过制表符分隔的,请使用:

代码语言:javascript
复制
df[df.columns[1:]] = [x.split('\t') for x in df['mean(ms)']]

票数 1
EN

Stack Overflow用户

发布于 2019-05-25 16:50:39

我知道您的列标题用逗号分隔,索引列和其他值用逗号分隔。这些值以制表符分隔。您可以使用"\t|,“分隔符读取,重命名列,然后按第一列编制索引。这是你想要的吗?我假设您的文件不包含逗号或制表符,而不是用来分隔任何内容。

代码语言:javascript
复制
df = pd.read_csv('results/actual.csv', sep='\t|,', index_col='100%Q')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56302908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档