Следующий код возвращает в словарь только последнюю итерацию. Я предполагаю, что неправильно инициализировал dicitonary?
import pandas as pd
from matplotlib import pyplot as plt
import numpy as np
df = pd.DataFrame(np.random.randint(0,1000,size=(18, 4)), columns=list('ABCD'))
mrkr = ['o', 'v', '^', '<', '>', '8', 's', 'p', '*', 'h', 'H', 'D', 'd', 'P',
'X', '1', '2', '3', '4']
mylist = list(df)
idx_mx_vals = []
for i in range(len(mylist)):
if df[mylist[i]][0] > 0:
idx_mx_vals.append(df[mylist[i]].idxmax())
else:
idx_mx_vals.append(df[mylist[i]].idxmin())
mx_vals = []
for i in range(len(mylist)):
if df[mylist[i]][0] > 0:
mx_vals.append(df[mylist[i]].max())
else:
mx_vals.append(df[mylist[i]].min())
d=[]
for i in range(len(mylist)):
d = {df.columns[i]: [idx_mx_vals[i], mx_vals[i], mrkr[i]]}
print(d)
Результирующий вывод: последняя итерация цикла
{'D': [14, 971, '<']}
Желаемый результат:
All iterations (4) from the loop.






Вы каждый раз перезаписываете d новым словарем, выполняя d = {...}. Вы должны сделать d[df.columns[i]] = [idx_mx_vals[i], mx_vals[i], mrkr[i]] (и, конечно, вам нужно сначала определить d как словарь, а не список).