【发布时间】:2018-06-01 23:33:12
【问题描述】:
我想把我之前写的一段python代码转换成pandas,这样就可以直接在dataframe中完成,而不是乱用csv文件。
我想根据多个值(属性)计算设备的运行状况。 假设我有以下df:
A B C
0 7 NaN 8
1 3 3 5
2 8 1 7
3 NaN 0 3
4 8 2 7
我想按如下方式计算健康:
请注意,
def attributeHealth仍然是旧形式,而不是 转换为熊猫,因为那是我卡住的部分,而这 是使用 csv 库的代码
df['Health'] = attributeHealth(df['A'], 10, 0.4) * attributeHealth(df['B'], 5, 0.5) * attributeHealth(df['C'],2 ,0.8) * 100
def attributeHealth(name, weight, limit):
if row[name] != 'NULL':
attrHealth = 1 - min(int(row[name])*weight/100, limit)
else:
attrHealth = 1
return attrHealth
我曾尝试先将其简化为单个属性,但似乎我不能以这种方式使用 min():
inputDF['health'] = 1 - min(inputDF['A']* 2/100, 0.7)
提前致谢!
【问题讨论】:
-
在这个示例 DataFrame 中你想要的输出是什么?
-
我会是原来的 DF,有一个额外的列“健康”。