#python #pandas
#python #pandas
Вопрос:
Рассмотрим приведенный ниже пример использования: когда я использую цикл for, я могу получить доступ как к ключу, так и к сгруппированным данным, но при попытке абстрагировать цикл for от использования map () Я получаю следующую ошибку:
raw_data = {'first_name': ['Jason', 'Molly', 'Tina', 'Jake', 'Amy'],
'last_name': ['Miller', 'Jacobson', 'Ali', 'Milner', 'Cooze'],
'age': [42, 52, 36, 24, 73],
'preTestScore': [4, 24, 31, 2, 3],
'postTestScore': [25, 94, 57, 62, 70]}
df = pd.DataFrame(raw_data, columns = ['first_name', 'last_name', 'age', 'preTestScore', 'postTestScore'])
df_grouped = df.groupby('last_name')
for key, group in df_grouped:
print(key, group)
map(lambda x,y: sys.stdout.write(x, y), df_grouped)
>>> TypeError: <lambda>() takes exactly 2 arguments (1 given)
Вот мой реальный пример. У меня нет воспроизводимого набора данных, который я мог бы опубликовать, но я пытаюсь создать линейный график и посмотреть, не очистит ли map мой код немного.
grouped_sim = raw_exprmt_dat.query('n > 1').groupby('model_id')
grouped_exp = raw_exprmt_dat.query('n == 1').groupby('model_id')
for key, group in grouped_sim:
plt.plot(group['X'], group['Y'], label=key, color=color_map[key])
if key == '365FGR':
for key, group in grouped_exp:
plt.plot(group['X'], group['Y'], 's', label=key, color=color_map[key], markersize=12)
Комментарии:
1. Что именно вы пытаетесь сделать с последней строкой?
2. @Efran производит тот же эффект, что и цикл for.
print()
не работает в лямбда-функциях для Python 2.7 .3. Ваша цель — только печатать? Или вы пытаетесь каким-то образом объединить фрейм данных?
4. На самом деле я пытаюсь создать линейный график с несколькими группами в моем реальном случае. Я пришел из R и действительно привык использовать map в своем программировании. Я просто пытаюсь посмотреть, можно ли имитировать подобное поведение в python.
5.
map
невидим. Насколько мне известно, вы не можете получить промежуточные значения, потому что теперь он создает итератор. Это либо работает, либо нет.