¿Cómo hacer meros y ejes de la misma longitud?

Para mi tarea, se supone que debo trazar las huellas de 20 huracanes en un mapa usando matplotlib. Sin embargo, cuando ejecuto mi código, aparece el error: “AssertionError: Grouper and axis debe tener la misma longitud”. Soy nuevo en python y matplotlib, así que, ¿podría alguien dirigirme en la dirección correcta de lo que necesito cambiar? Gracias por adelantado

Aquí está el código que tengo:

import numpy as np from mpl_toolkits.basemap import Basemap import matplotlib.pyplot as plt from PIL import * fig = plt.figure(figsize=(12,12)) ax = fig.add_axes([0.1,0.1,0.8,0.8]) m = Basemap(llcrnrlon=-100.,llcrnrlat=0.,urcrnrlon=-20.,urcrnrlat=57., projection='lcc',lat_1=20.,lat_2=40.,lon_0=-60., resolution ='l',area_thresh=1000.) m.bluemarble() m.drawcoastlines(linewidth=0.5) m.drawcountries(linewidth=0.5) m.drawstates(linewidth=0.5) # Creates parallels and meridians m.drawparallels(np.arange(10.,35.,5.),labels=[1,0,0,1]) m.drawmeridians(np.arange(-120.,-80.,5.),labels=[1,0,0,1]) m.drawmapboundary(fill_color='aqua') # Opens data file import pandas as pd name = [ ] df = pd.read_csv('louisianastormb.csv') for name, group in df.groupby([name]): latitude = group.lat.values longitude = group.lon.values x,y = m(longitude, latitude) plt.plot(x,y,'y-',linewidth=2 ) plt.xlabel('Longitude') plt.ylabel('Latitude') plt.title('20 Hurricanes with Landfall in Louisiana') plt.savefig('20hurpaths.jpg', dpi=100) 

Aquí está la salida de error completo:

  Traceback (most recent call last): File "/home/darealmzd/lstorms.py", line 31, in  for name, group in df.groupby([name]): File "/usr/local/lib/python2.7/dist-packages/pandas/core/generic.py", line 186, in groupby squeeze=squeeze) File "/usr/local/lib/python2.7/dist-packages/pandas/core/groupby.py", line 533, in groupby return klass(obj, by, **kwds) File "/usr/local/lib/python2.7/dist-packages/pandas/core/groupby.py", line 197, in __init__ level=level, sort=sort) File "/usr/local/lib/python2.7/dist-packages/pandas/core/groupby.py", line 1325, in _get_grouper ping = Grouping(group_axis, gpr, name=name, level=level, sort=sort) File "/usr/local/lib/python2.7/dist-packages/pandas/core/groupby.py", line 1129, in __init__ self.grouper = _convert_grouper(index, grouper) File "/usr/local/lib/python2.7/dist-packages/pandas/core/groupby.py", line 1350, in _convert_grouper raise Assertionerror('Grouper and axis must be same length') Assertionerror: Grouper and axis must be same length 

El problema es que está agrupando por (efectivamente) una lista de lista vacía ( [[]] ). Porque tiene el name = [] anterior y luego también lo envuelve en una lista.

Si desea agrupar en una sola columna (llamada ‘HurricaneName’), debe hacer algo como:

for name, group in df.groupby('HurricaneName'):

Sin embargo, si desea agrupar en varias columnas, necesita pasar una lista:

for name, group in df.groupby(['HurricaneName', 'Year'])

Si quieres ponerlo en una variable como la que tienes, puedes hacerlo así:

 col_name = 'State' for name, group in df.groupby([col_name]):