2017-05-31 16 views
1

私はPandasを初めて使用しています。私は値1と値2の列2 & 3行ごとに移動したいcsvファイルを持っています。誰かが私を助けてくれますか?私はそれを把握していないようだ。パンダPython移動行

data, value1, value2 

1.00   
2.00   
3.00   
4.00   
5.00   
6.00   
7.00   
8.00   
9.00  

出力はあなたがpd.DataFrameバックデータフレームに変換して、列に名前を付け、その後numpyのメソッドreshapeを使用することができ、この

one, value1, value2 

1.00 2.00 3.00   
4.00 5.00 6.00   
7.00 8.00 9.00  

答えて

1

もっと一般的な解決策はunstacknumpy.arangeの剰余と床部門とMultiIndex.from_arraysを作成することです:

print (df) 
    data 
0 1.0 
1 2.0 
2 3.0 
3 4.0 
4 5.0 
5 6.0 
6 7.0 
7 8.0 
8 9.0 
9 10.0 

a = np.arange(len(df.index)) 
print (a) 
[0 1 2 3 4 5 6 7 8 9] 

df.index = pd.MultiIndex.from_arrays([a % 3, a // 3]) 
print (df) 
    data 
0 0 1.0 
1 0 2.0 
2 0 3.0 
0 1 4.0 
1 1 5.0 
2 1 6.0 
0 2 7.0 
1 2 8.0 
2 2 9.0 
0 3 10.0 

df1 = df['data'].unstack(0) 
df1.columns=['data','value1','value2'] 
print (df1) 
    data value1 value2 
0 1.0  2.0  3.0 
1 4.0  5.0  6.0 
2 7.0  8.0  9.0 
3 10.0  NaN  NaN 
+0

それはクールな解決策です。 +1 –

+0

うわー。これは素晴らしい!それほど感謝します!私は読めるほどの読書をしています。 –

+0

喜んで助けることができます。私の答えが役に立ったら、[受諾](http://meta.stackexchange.com/a/5235/295067)を忘れないでください。ありがとう。 – jezrael

1

に変わるでしょう。

pd.DataFrame(df.values.reshape(3,3), columns=['data','value1','value2']) 

出力:

data value1 value2 
0  1  2  3 
1  4  5  6 
2  7  8  9 
+0

値のエラーを取得:(ip3)、列= [IPython-input-268-eefe18ff0f4e] ----> 1 na = pd.DataFrame(df.values.reshape(3,3)、columns = 'data'、 'value1'、 'value2'] ValueError:新しい配列の合計サイズは変更しないでください –

+0

この解決方法は9個の値に制限されています。 jezraelのソリューションはより堅牢です。 –