[英]Pandas: Convert DataFrame Column Values Into New Dataframe Indices and Columns
我有一个如下所示的数据框:
a b c
0 1 10
1 2 10
2 2 20
3 3 30
4 1 40
4 3 10
上面的数据帧是默认(0,1,2,3,4 ...)索引。 我想将其转换为如下所示的数据框:
1 2 3
0 10 0 0
1 0 10 0
2 0 20 0
3 0 0 30
4 40 0 10
如果第一个数据帧中的列'a'成为第二个数据帧中的索引,则'b'的值将成为列名,并且c的值将被复制,其中0或NaN填充缺失值。 原始数据集很大,将导致第二个数据帧非常稀疏。 然后我打算将这个数据框添加到更大的数据框中,这很简单。
有人可以建议最好的方法来实现这一目标吗?
您可以使用pivot
方法。
请参阅文档: http : //pandas.pydata.org/pandas-docs/stable/reshaping.html#reshaping-by-pivoting-dataframe-objects
一个例子:
In [1]: import pandas as pd
In [2]: df = pd.DataFrame({'a':[0,1,2,3,4,4], 'b':[1,2,2,3,1,3], 'c':[10,10,20,3
0,40,10]})
In [3]: df
Out[3]:
a b c
0 0 1 10
1 1 2 10
2 2 2 20
3 3 3 30
4 4 1 40
5 4 3 10
In [4]: df.pivot(index='a', columns='b', values='c')
Out[4]:
b 1 2 3
a
0 10 NaN NaN
1 NaN 10 NaN
2 NaN 20 NaN
3 NaN NaN 30
4 40 NaN 10
如果你想在你的例子中使用零而不是NaN,你可以使用fillna
:
In [5]: df.pivot(index='a', columns='b', values='c').fillna(0)
Out[5]:
b 1 2 3
a
0 10 0 0
1 0 10 0
2 0 20 0
3 0 0 30
4 40 0 10
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.