2017-07-20 8 views
2

一部の列からデータを取得するのに役立つ必要があります。複数の列からデータを取得し、pandasを使用してリストに保存するにはどうすればいいですか?

は私が別々のリストで偶数と奇数列からのデータを保存するこのtest.txtファイル

30012 820202 999201 
81910 882101 100291 
88271 003300 221920 
93929 719300 

を考えてみましょう。

私は以下を試しましたが、私が望む正しい答えを得られませんでした。

​​

これは

CH1: ['820202', '882101', '003300', '719300'] 
CH0: ['999201', '100291', '221920', nan] 

私の望ましい結果が

CH1: ['820202', '882101', '003300', '719300'] 
CH0: ['30012','81910','88271','93929','999201', '100291', '221920', nan] 

私は、このスクリプトで何を見逃したのかであるが生産ご協力いただきありがとうございます。

+0

問題がありますか?解決策は機能しませんか? – jezrael

+0

最初は機能しましたが、さらに列を追加しようとすると、その結果、最初の列は印刷されませんでした。私は新しい列を追加して、代わりに3を質問のように6にします。アンティークで申し訳ありません。 – Fang

+0

Hmmmmなので、最初の列は省略されていますか? 'index'に変換された場合、最初の列である可能性があります。これは' print(df.index) 'で確認できます。 'a = df.values'の代わりに' a = df.reset_index()。values'を使用します。 – jezrael

答えて

1

numpy以上に頼ることができる


オプション2
dfarraysvaluesを選択し、列を選択して平滑化にnumpy.ravelを使用します。最終コールtolist

a = df.values 
ch0 = a[:, ::2].ravel().tolist() 
ch1 = a[:, 1::2].ravel().tolist() 
print (ch0) 
['30012', '999201', '81910', '100291', '88271', '221920', '93929', nan] 

print (ch1) 
['820202', '882101', '003300', '719300'] 
+0

このコメントを受け入れることができない申し訳ありません、私は最後のエラーを把握します。それは私のタイプミスです。またすみません。あなたの助けをありがとう – Fang

+0

問題はありません、喜んで助けることができます! – jezrael

1

オプション1
あなたは私がnumpyさんravel使用している可能性がiloc

ch0 = fileRead.iloc[:, 0::2].stack().tolist() 
ch1 = fileRead.iloc[:, 1::2].stack().tolist() 

代わりstackを使用することができます。しかし、私はそれを暗黙的に利用するためにスタックを使用することにしましたdropna。これはpandasのapiにもっと頼り、より透明です。私たちは、

あなたが変換することができます
v = fileRead.values 

ch0 = v[:, 0::2].ravel() 
ch0 = ch0[~np.isnan(ch0)].tolist() 

ch1 = v[:, 1::2].ravel() 
ch1 = ch1[~np.isnan(ch1)].tolist() 

ch0 

['30012', '999201', '81910', '100291', '88271', '221920', '93929'] 

ch1 

['820202', '882101', '003300', '719300'] 
関連する問題