将列(但跳过索引)保留在geopandas data.frame中

时间:2018-09-11 00:57:57

标签: python pandas geopandas data-munging

我想在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数据集的几行:

Geopandas Lines Example

此外,这是一些可重现的示例:

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:无法散列的类型:“多边形”

最好的问候, 雷南

0 个答案:

没有答案