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

  • 相关阅读:
    微软开发中心的rss历史记录(22)
    asp.net dll 动态生成和调用(转)
    准备写博了
    来博客园报道啦
    web爬行器的准备工作
    跨浏览器设置标签样式
    感谢我身边的朋友们
    难过的一天:(
    12月:期待好运来
    11月 难过一整个世界都寂寞
  • 原文地址:https://www.cnblogs.com/cymwill/p/8864707.html
Copyright © 2011-2022 走看看