我想在python中使用一些“ unpivot”方法来重塑我的熊猫数据框。但是,我要保留的一列是重定形状后的地理熊猫的“几何”列。我的数据集有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:无法散列的类型:“多边形”
最好的问候, 雷南