2016-12-21 5 views
2

私は、(混合データ型の)一意の値を持つ列をピボットすると、以下のようになるパンダのデータフレームを持っています。ユニークな名前のテーブルをピボットする方法と、ヌル値を避ける方法はありますか?

In [1]: import pandas as pd 
In [2]: import numpy as np 
In [3]: df = pd.DataFrame({'A' : ['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight'],'B' : [0.815, 0.765, 'two', 'four', 0.981, 'six', 'seven', 'eight']}) 
In [4]: df 
Out[4]: 
     A  B 
0 one 0.815 
1 two 0.765 
2 three two 
3 four four 
4 five 0.981 
5 six six 
6 seven seven 
7 eight eight 

In [5]: df.pivot(columns='A', values='B') 
Out[5]: 
A eight five four one seven six three two 
0 None None None 0.815 None None None None 
1 None None None None None None None 0.765 
2 None None None None None None two None 
3 None None four None None None None None 
4 None 0.981 None None None None None None 
5 None None None None None six None None 
6 None None None None seven None None None 
7 eight None None None None None None None 

このデータフレームを列「A」を「なし」値なしで1行にピボットする方法はありますか?

答えて

3

私はあなたがデータフレームを転置することを提案していると思います。

df.set_index('A').T 
+0

ありがとう! – aaron02

0

スクリプトが列Bの値を検索し、それが見つからない時はいつでもそれだけでNoneを返すので、これが起こっています。ご覧のように、(7,8)= 8、B列の8行目、(4,5)= 0.981、B列の5行目などです。本当にここで欲しいのはtranspose()です。

import pandas as pd 
>>> df 
     A  B 
0 one 0.815 
1 two 0.765 
2 three two 
3 four four 
4 five 0.981 
5 six six 
6 seven seven 
7 eight eight 

>>> df_t = df.transpose() 
>>> df_t 
     0  1  2  3  4 5  6  7 
A one two three four five six seven eight 
B 0.815 0.765 two four 0.981 six seven eight 

あなたが列ヘッダーを変更したい場合は、以下の操作を行うことができます。そのため

df_t.column = df_t.iloc[0] #replaces the column headers with the first row 
df_t = df_t[1:] #deletes the first line so you don't see a duplicate 

>>> df_t 
A one two three four five six seven eight 
B 0.815 0.765 two four 0.981 six seven eight 
+0

ありがとう! – aaron02

関連する問題