Python 在字典中查找最大值,并将所有值除以该值
我有一本有100把钥匙的字典。它看起来像这样:Python 在字典中查找最大值,并将所有值除以该值,python,pandas,Python,Pandas,我有一本有100把钥匙的字典。它看起来像这样: {'key1': [0.0, 0.0, 0.95, 0.06, 0.01],'key2': [0.0, 0.1, 0.95, 0.26, 0.11].....'key100': [0.2, 0.0, 0.23, 0.16, 0.21]} 我希望找到上面示例中的最大值,它将是0.95,并将所有键的所有值除以该值。基本上,我会将字典转换为最大值的百分比。如果有人能建议我如何最好地在pandas/python中实现这一点,我将不胜感激 多谢各位 快速写
{'key1': [0.0, 0.0, 0.95, 0.06, 0.01],'key2': [0.0, 0.1, 0.95,
0.26, 0.11].....'key100': [0.2, 0.0, 0.23, 0.16, 0.21]}
我希望找到上面示例中的最大值,它将是0.95,并将所有键的所有值除以该值。基本上,我会将字典转换为最大值的百分比。如果有人能建议我如何最好地在pandas/python中实现这一点,我将不胜感激
多谢各位 快速写入但愚蠢的方法是,如果遇到更高的值,只需遍历dict并更新sentinel值:
maxval = 0.0
for key in d:
for val in d[key]:
if val > maxval:
maxval = val
for key in d:
d[key] = [val / maxval for val in d[key]]
试试这个:
# First, find the global maximum value
max_val = 0.0
for key, value_list in d.iteritems():
local_max = max(value_list)
if local_max > max_val:
max_val = local_max
# Then divide every item in every value list by the global maximum
new_dict = {}
for key, value_list in d.iteritems():
new_dict[key] = [x/max_val for x in value_list]
data = {'key1': [0.0, 0.0, 0.95, 0.06, 0.01],
'key2': [0.0, 0.1, 0.95, 0.26, 0.11],
'key100': [0.2, 0.0, 0.23, 0.16, 0.21]}
max_in_data = max(max(vals) for vals in data.values())
data = {key: map(lambda x: x/max_in_data, vals)
for key, vals in data.items()}
下面是如何处理熊猫的
import pandas as pd
data = {'key1': [0.0, 0.0, 0.95, 0.06, 0.01],'key2': [0.0, 0.1, 0.95,
0.26, 0.11], 'key100': [0.2, 0.0, 0.23, 0.16, 0.21]}
df = pd.DataFrame(data)
max_value = df.max().max()
df /= max_value
试试这个:
# First, find the global maximum value
max_val = 0.0
for key, value_list in d.iteritems():
local_max = max(value_list)
if local_max > max_val:
max_val = local_max
# Then divide every item in every value list by the global maximum
new_dict = {}
for key, value_list in d.iteritems():
new_dict[key] = [x/max_val for x in value_list]
data = {'key1': [0.0, 0.0, 0.95, 0.06, 0.01],
'key2': [0.0, 0.1, 0.95, 0.26, 0.11],
'key100': [0.2, 0.0, 0.23, 0.16, 0.21]}
max_in_data = max(max(vals) for vals in data.values())
data = {key: map(lambda x: x/max_in_data, vals)
for key, vals in data.items()}
请尝试以下代码:
import pandas as pd
data = {'key1': [0.0, 0.0, 0.95, 0.06, 0.01],'key2': [0.0, 0.1, 0.95,
0.26, 0.11], 'key100': [0.2, 0.0, 0.23, 0.16, 0.21]}
data = pd.DataFrame(data)
max_value = data.max().unique()
data = data.divide(max_value[0])
感谢Yuriy-如果我将新的df转换为一个百分比,即所有值*100,那么如何最好地实现这一点?对于输入df:df[key]*=100