我有一个与此格式相似的数据集:
CITY - YEAR - ATTRIBUTE - VALUE
## example:
dallas-2002-crime-100
dallas-2003-crime-101
dallas-2002-population-4000
houston-2002-population-4100
etc....
我正在尝试将此长格式转换为宽格式,以使每个 city + year 值都是一行,并且 attribute 的所有不同组合都是columns-names
因此,新数据框将如下所示:
###
city - year - population - crime - median_income- etc....
我已经看过数据透视功能,但是它似乎不支持用于重塑的多索引。有人可以让我知道如何解决移调吗?另外,我试着看
pd.pivot_table
,但似乎这通常仅适用于具有和,均值等的数值数据。我的大多数VALUE属性实际上是字符串,因此我似乎无法使用它。
### doesn't work - can't use a multindex
df.pivot(index=['city','year'], columns = 'attribute', values='value')
谢谢您的帮助!
答案 0 :(得分:1)
这是您要寻找的东西
import pandas as pd
from io import StringIO
data = """city-year-attribute-value
dallas-2002-crime-100
dallas-2003-crime-101
dallas-2002-population-4000
houston-2002-population-4100"""
df = pd.read_csv(StringIO(data), sep="-")
pivoted = df.pivot_table(
index=["city", "year"],
columns=["attribute"],
values=["value"]
)
print(pivoted.reset_index())
结果:
city year value
attribute crime population
0 dallas 2002 100.0 4000.0
1 dallas 2003 101.0 NaN
2 houston 2002 NaN 4100.0