我有一个以下形式的数据框:
df = pd.read_csv('data/original.csv', sep = ',', names=["Date", "Gran", "Country", "Region", "Commodity", "Type", "Price"], header=0)
我试图在索引Date,Gran,Country,Region上进行自我联接,以生成以下形式生成行 日期,格兰,国家,地区,商品X,TypeX,价格X,商品Y,类型Y,Prixe Y,商品Z,Z型,价格Z
每一行都应该具有特定区域的所有不同商品和价格。
有一种简单的方法吗?
非常感谢任何帮助!
注意:我通过忽略一些属性来简化示例
输入示例:
Date Country Region Commodity Price
1 03/01/2014 India Vishakhapatnam Rice 25
2 03/01/2014 India Vishakhapatnam Tomato 30
3 03/01/2014 India Vishakhapatnam Oil 50
4 03/01/2014 India Delhi Wheat 10
5 03/01/2014 India Delhi Jowar 60
6 03/01/2014 India Delhi Bajra 10
输出示例:
Date Country Region Commodit1 Price1 Commodity2 Price2 Commodity3 Price3
1 03/01/2014 India Vishakhapatnam Rice 25 Tomato 30 Oil 50
2 03/01/2014 India Delhi Wheat 10 Jowar 60 Bajra 10
答案 0 :(得分:1)
您想要做的事情称为重塑(具体而言,从长到宽)。有关详细信息,请参阅this answer。
不幸的是,据我所知,大熊猫没有一种简单的方法可以做到这一点。我在另一个帖子中为你的问题调整了答案:
df['idx'] = df.groupby(['Date','Country','Region']).cumcount()
df.pivot(index= ['Date','Country','Region'], columns='idx')[['Commodity','Price']]
这能解决您的问题吗?