【问题标题】:how to change string matrix to a integer matrix如何将字符串矩阵更改为整数矩阵
【发布时间】:2020-09-08 05:34:46
【问题描述】:

我有一个这样的投票数据集:

republican,n,y,n,y,y,y,n,n,n,y,?,y,y,y,n,y
republican,n,y,n,y,y,y,n,n,n,n,n,y,y,y,n,?
democrat,?,y,y,?,y,y,n,n,n,n,y,n,y,y,n,n
democrat,n,y,y,n,?,y,n,n,n,n,y,n,y,n,n,y

但它们都是字符串,所以我想将它们更改为整数矩阵并进行统计 hou_dat = pd.read_csv("house.data", header=None)

for i in range (0, hou_dat.shape[0]):
    for j in range (0, hou_dat.shape[1]):
        if hou_dat[i, j] == "republican":
            hou_dat[i, j] = 2
        if hou_dat[i, j] == "democrat":
            hou_dat[i, j] = 3
        if hou_dat[i, j] == "y":
            hou_dat[i, j] = 1
        if hou_dat[i, j] == "n":
            hou_dat[i, j] = 0
        if hou_dat[i, j] == "?":
            hou_dat[i, j] = -1

hou_sta = hou_dat.apply(pd.value_counts)
print(hou_sta)

但是,它显示错误,如何解决?:

Exception has occurred: KeyError
(0, 0)

【问题讨论】:

    标签: python python-3.x pandas numpy


    【解决方案1】:

    IIUC,你需要map和stack

    map_dict = {'republican' : 2,
               'democrat' : 3,
               'y' : 1,
               'n' : 0,
               '?' : -1}
    
    df1 = df.stack().map(map_dict).unstack()
    
    print(df1)
    
       0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16
    0   2   0   1   0   1   1   1   0   0   0   1  -1   1   1   1   0   1
    1   2   0   1   0   1   1   1   0   0   0   0   0   1   1   1   0  -1
    2   3  -1   1   1  -1   1   1   0   0   0   0   1   0   1   1   0   0
    3   3   0   1   1   0  -1   1   0   0   0   0   1   0   1   0   0   1
    

    【讨论】:

    • 再次感谢,但我在哪里添加路径?
    • hou_dat = pd.read_clipboard("house.data",sep=" ", header=None) 不正确
    • @4daJKong 你可以忽略它,那只是为了从上面复制你的数据。
    • 但是我的数据来自数据集,名为“house.data”,如何导入?
    • hou_dat = pd.read_csv("house.data", header=None) 你的意思是直接添加pd.read_clipboard?在这下面?
    【解决方案2】:

    如果您要处理来自 csv 的数据,最好使用 pandas 的方法。 在这种情况下,您可以使用 replace 方法来完全按照您的要求进行操作。

    hou_dat.replace(to_replace={'republican':2, 'democrat':3, 'y':1, 'n':0, '?':-1}, inplace=True)
    

    您可以在documentation 中了解更多信息

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 2014-01-14
      • 1970-01-01
      相关资源
      最近更新 更多