保留geopandas中unpivot中的列(但跳过索引)数据.fram

2024-04-26 10:17:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用python中的一些“unpivot”方法来重塑我的pandas数据帧。不过,我想保留的一列是重塑后geopandas的“geometry”列。我的数据集有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:无法处理的类型:“Polygon”

致以最诚挚的问候, 雷南


Tags: csv数据pathnamemapyeartidygeopandas