【发布时间】:2020-03-06 21:27:51
【问题描述】:
我有一个类似格式的数据集:
CITY - YEAR - ATTRIBUTE - VALUE
## example:
dallas-2002-crime-100
dallas-2003-crime-101
dallas-2002-population-4000
houston-2002-population-4100
etc....
我正在尝试将这种长格式转换为宽格式,以便每个 city+year 值都是一行,attributes 的所有不同组合都是列名.
因此这个新的数据框看起来像:
###
city - year - population - crime - median_income- etc....
我查看了 pivot 函数,但它似乎不支持用于重塑的多索引。有人可以让我知道如何解决转调吗?此外,我试图看看
pd.pivot_table 但似乎这通常只适用于具有总和、平均值等的数字数据。我的大多数 VALUE 属性实际上都是字符串,所以我似乎无法使用它。
### doesn't work - can't use a multindex
df.pivot(index=['city','year'], columns = 'attribute', values='value')
感谢您的帮助!
【问题讨论】:
-
试试
pd.crosstab( [df["CITY"], df["YEAR"]], df["ATTRIBUTE"], values=df["VALUE"], aggfunc=lambda x: x ),如果你显示你想要的实际数据框而不是扁平列的列表,这会有所帮助 -
您的样本
city - year - population - crime - median_income- etc....,这是您的列标题,还是什么?请提供一个列样本和几行您希望它看起来的样子。你是什么意思“它不起作用”?请提供输出示例,因为这对我有用。
标签: python pandas pivot pivot-table