我应该如何将这个转换为:
year artist genre genre_sales
1999 A Pop/Rock 10
1999 B Hip/Hop 15
1999 C Country 8
2000 A Pop/Rock 11
2000 B Hip/Hop 14
2000 D Jazz 1
2001 B Hip/Hop 18
2001 C Country 10
变成这样:
year artist genre genre_sales
1999 A Pop/Rock Nan
1999 B Hip/Hop Nan
1999 C Country Nan
2000 A Pop/Rock 10
2000 B Hip/Hop 15
2000 D Jazz (1999 Jazz sales despite D not releasing in '99)
2001 B Hip/Hop 14
2001 C Country (2000 country values, not the 8 from '99)
我看到了关于groupby-shift的问题和食谱页面,并且认为我可以做出类似下面的操作:
df.groupby(['year','artist'])['genre_sales'].shift(1)
或者
df.groupby(['year','genre','artist'])['genre_sales'].shift(1)
但我认为这些只能在艺术家每年制作一张专辑的情况下才有效。
当前的“类型销售额”是该艺术家所在流派的年度销售额。我正在尝试获得上一年度每位艺术家在同一行中的“类型销售额”。每个流派每年都会有多位艺术家,每位艺术家在特定年份中可能没有或有多个条目。