如何使用条件循环数据?

时间:2019-10-07 09:14:00

标签: python loops

我有一组数据,第一列是年龄(数字),第二列是性别(类别),第三列是保存(数字)。

我想做的是,如果该列是数字数据,则找到均值和标准差,如果该列是分类数据,则找到模式。

我试图找到索引type = num并将索引放入for loop中以计算均值和标准差,而其余索引用于计算分类数据的模式(在本例中为第二列),但是,我陷入了循环。

import numpy as np

data = np.array([[11, "male",1222],[23,"female",333],[15,"male",542]])

# type of the data above
types = ["num","cat","num"]

idx = []
for i in range(2): 
    if (types[i] == "num"):
       idx.append(types[i].index)

for i in idx:
    np.mean(data[:,i].astype("float64"))

我希望代码能够获得数值数据的均值和标准差以及类别数据的众数。如果有可能,请尝试不要构建任何其他程序包(我不确定`index'是否具有其自己的程序包)。

1 个答案:

答案 0 :(得分:3)

只需在if语句中删除括号。

...

idx = []
for i in range(2): 
    if types[i] == "num":
       idx.append(types[i].index)
...

编辑: 建议不要使用范围枚举来循环类型范围,而应使用所需的索引。

for index, _type in enumerate(types):
    if _type == 'num':
        idx.append(index)