Сохранение столбцов (но без индекса) в развороте в геопанде data.frame - PullRequest
0 голосов
/ 11 сентября 2018

Я бы хотел использовать какой-нибудь метод unpivot в python, чтобы изменить форму моего фрейма данных Pandas.Тем не менее, один из столбцов, которые я хочу сохранить, - это столбец «Геометрия» геопанд после изменения его формы.В моем наборе данных есть 5 столбцов, и нет способа поместить этот столбец 'geometry' в качестве индекса, а затем сбросить индекс так, как я пытался это сделать ниже:

us_tidy[['Name','STATE_ABBR','geometry','Year','Income']].pivot_table(index = ['Name','STATE_ABBR', 'geometry'], columns = 'Year', values = 'Income').reset_index()

Есть ли способ изменить форму набора данных таким широким способом?и сохраняя некоторые столбцы, но ИЗБЕГАЯ иметь эту индексную часть (по крайней мере, для этого конкретного столбца) ???

Вот несколько строк набора данных геопанд:

Пример строк Geopandas

Кроме того, вот несколько воспроизводимых примеров:

import pandas as pd
import pysal as ps   
import geopandas as gpd

csv_path = ps.examples.get_path('usjoin.csv')
usjoin = pd.read_csv(csv_path)

years = list(range(1929, 2010))                  
cols_to_calculate = list(map(str, years))

shp_path = ps.examples.get_path('us48.shp')
us48_map = gpd.read_file(shp_path)
us48_map = us48_map[['STATE_FIPS','STATE_ABBR','geometry']]
us48_map.STATE_FIPS = us48_map.STATE_FIPS.astype(int)
df_map = us48_map.merge(usjoin, on='STATE_FIPS')

# Making the dataset tidy
us_tidy = pd.melt(df_map, 
                  id_vars=['Name', 'STATE_FIPS', 'STATE_ABBR', 'geometry'],
                  value_vars=cols_to_calculate, 
                  var_name='Year', 
                  value_name='Income').\
                  sort_values('Name')

us_tidy[['Name','STATE_ABBR', 'geometry', 'Year','Income']].\
                 pivot_table(index = ['Name','STATE_ABBR', 'geometry'], 
                             columns = 'Year', 
                             values = 'Income')

Сообщение об ошибке: TypeError: unhashable type: 'Polygon'

С уважением, Renan

...