首页 > 解决方案 > 为什么分组数据框在 for 循环中提供键和数据,但使用 map() 不起作用?

问题描述

考虑下面的用例,当我使用 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)

标签: pythonpandas

解决方案


推荐阅读