簡體   English   中英

Pandas:將DataFrame列值轉換為新的Dataframe索引和列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM