我想使用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数据集的一些行:
此外,这里还有一些可复制的示例:
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”
致以最诚挚的问候, 雷南
目前没有回答
相关问题 更多 >
编程相关推荐