zoukankan      html  css  js  c++  java
  • dataframe 列名重新排序

    在用list包含多个dict的模式生成dataframe时,由于dict的无序性,而uci很多数据的特征名直接是1,2,3...,生成的dataframe和原生的不一样,

    为了方便观看和使用,我们将其列名排序:

    有以下两种方法(都不包含y列的情况下):

    1、(我的):

    df.columns = df.columns.astype(int)
    df.sort_index(axis=1,inplace=True)

    先将列名从字符串转为int型,然后再对列名排序。

    2、(网上看到的):

    对于这样的数据: ['Q1.3','Q6.1','Q1.2','Q1.1',......] 

    要变为这样的: ['Q1.1','Q1.2','Q1.3',.....'Q6.1',......] 

    df.reindex_axis(sorted(df.columns), axis=1)

    这样的话,似乎对于字符串型数据也可以排序(但如果要解决我那个问题,也要先进行数据类型的转换)

    最后,附上完整的从uci.txt文本数据类型转换为dataframe表格式的numerical类型代码:

    X,y = [],[]
    with open("ionosphere_scale.txt") as f:
        lines = f.readlines()
        for line in lines:
            line = line.split()
            y.append(line[0])
            X.append({i.split(":")[0]:i.split(":")[1] for i in line[1:]})
    
    df = pd.DataFrame(X,dtype="float")
    n_feat = len(df.columns)
    df.columns = df.columns.astype(int)
    df.sort_index(axis=1,inplace=True)
    df["y"] = np.array(y,dtype=float)
    print(df.info())
    df.to_excel("ionosphere_scale.xlsx",index=None)

    最后,mark一篇关于数据类型转换的文章:https://vimsky.com/article/3694.html

  • 相关阅读:
    scrapy user-agent随机更换
    python框架Scrapy中crawlSpider的使用——爬取内容写进MySQL
    异步代理池2--正确实现并发
    python asyncio异步代理池
    SSH 上传下载文件
    scrapy 自定义扩展
    scrapy pipelines 以及 cookies
    scrapy 去重策略修改
    提车注意事项
    mysql 笔记
  • 原文地址:https://www.cnblogs.com/cymwill/p/8864707.html
Copyright © 2011-2022 走看看