加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 将excel或csv文件转换为pandas多级数据帧

发布时间:2020-12-16 21:57:23 所属栏目:Python 来源:网络整理
导读:我已经获得了一个相当大的Excel文件(5k行),也是一个CSV,我想把它变成一个pandas多级DataFame.该文件的结构如下: SampleID OtherInfo Measurements Error Notessample1 stuff more stuff 36 6 26 7 37 8sample2 newstuff lots of stuff 25 6 27 7 其中测量数

我已经获得了一个相当大的Excel文件(5k行),也是一个CSV,我想把它变成一个pandas多级DataFame.该文件的结构如下:

SampleID    OtherInfo    Measurements    Error    Notes
sample1     stuff                                 more stuff
                         36              6
                         26              7
                         37              8
sample2     newstuff                              lots of stuff
                         25              6
                         27              7

其中测量数量是可变的(有时为零).任何信息之间没有完整的空行,并且“测量”和“错误”列在具有其他(字符串)数据的行上为空;这可能会使解析更难(?).是否有一种简单的方法可以自动执行此转换?我最初的想法是首先使用Python解析文件,然后在循环中将内容提供到DataFrame插槽中,但我不确切知道如何实现它,或者它是否是最佳的行动方案.

提前致谢!

最佳答案
看起来您的文件具有固定宽度列,可以使用read_fwf().

In [145]: data = """
SampleID    OtherInfo    Measurements    Error    Notes                   
sample1     stuff                                 more stuff              
                         36              6
                         26              7
                         37              8
sample2     newstuff                              lots of stuff           
                         25              6
                         27              7
"""

In [146]: df = pandas.read_fwf(StringIO(data),widths=[12,13,14,9,15])

好的,现在我们有了数据,只需要一些额外的工作,你就可以使用set_index()来创建MultiLevel索引.

In [147]: df[['Measurements','Error']] = df[['Measurements','Error']].shift(-1)

In [148]: df[['SampleID','OtherInfo','Notes']] = df[['SampleID','Notes']].fillna()

In [150]: df = df.dropna()

In [151]: df
Out[151]:
  SampleID OtherInfo  Measurements  Error          Notes
0  sample1     stuff            36      6     more stuff
1  sample1     stuff            26      7     more stuff
2  sample1     stuff            37      8     more stuff
4  sample2  newstuff            25      6  lots of stuff
5  sample2  newstuff            27      7  lots of stuff

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读