Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在字典中查找最大值,并将所有值除以该值_Python_Pandas - Fatal编程技术网

Python 在字典中查找最大值,并将所有值除以该值

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中实现这一点,我将不胜感激 多谢各位 快速写

我有一本有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中实现这一点,我将不胜感激


多谢各位

快速写入但愚蠢的方法是,如果遇到更高的值,只需遍历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