2016-09-16 5 views
1

私は1000を超えるデータ列を持つxlsxファイルを持っています。最初に、データファイル(数字と文字を含むことができる)から1秒おきに列を解析し、解析されたデータから一意のリストを作成したいと考えています。Pandasを使って一意のリストを作成する

私は完全なnoobです。&は "for"と "do while"ループを試しましたが、いずれも私のために働いていません。

これまでのところ、私が持っている:

import pandas as pd 
    workbook = pd.read_excel('C:\Python27\Scripts\Data.xlsx') 
    worksheet = workbook.sheetname='Data' 

    for col in range(worksheet[0], worksheet[1300]): 
     print(col) 

私は、テキストファイルから独自のリストを作成してデータを追加し、おそらくテキストファイルに書き込む必要があると思う - 私はそれがちょうどなってきた第二の部分を行うことができますそれはテキストファイルに私は問題を抱えています。あなたがステップをスライスして使用して列を反復処理することができます

おかげ

+0

申し訳ありませんが、2番目の列が2番目の列またはすべての偶数列を意味しているとしますか?また、いくつかのグローバルリストまたは列ごとのリストを必要としていますか?また、あなたは['unique'](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.unique.html#pandas.Series.unique)を見ましたか? – EdChum

+0

ありがとうエド、それはすべての偶数列です - 0,2,4,6,8、またはA、C、E、G、私はAWKに至るまでです。合計で1286の列があるので、643のうちリストを作成し、そのリストから固有のリストを作成したいと考えています。私は間違いなくpandas.series.unique()を使用しますが、643列を1つのリストに入れる方法は不明です。 –

答えて

2

のargすなわちdf.ix[:, ::2]

In [35]: 
df = pd.DataFrame({'a':1, 'b':[1,2,3,4,5], 'c':[2,3,4,5,6], 'd':0,'e':np.random.randn(5)}) 
df 

Out[35]: 
    a b c d   e 
0 1 1 2 0 -0.352310 
1 1 2 3 0 1.189140 
2 1 3 4 0 -1.470507 
3 1 4 5 0 0.742709 
4 1 5 6 0 -2.798007 

ここで我々は、すべての第二列のステップ:

In [37]: 
df.ix[:,::2] 

Out[37]: 
    a c   e 
0 1 2 -0.352310 
1 1 3 1.189140 
2 1 4 -1.470507 
3 1 5 0.742709 
4 1 6 -2.798007 

を私たちは、その後だけ呼び出すことができますnp.uniqueをdf全体に適用して、すべての一意の値の単一の配列を取得します。

In [36]: 
np.unique(df.ix[:,::2]) 

Out[36]: 
array([-2.79800676, -1.47050675, -0.35231005, 0.74270934, 1.  , 
     1.18914011, 2.  , 3.  , 4.  , 5.  , 6.  ]) 
+0

非常に良い。一般に、 'numpy'関数を呼び出すとき、' as_matrix'を呼び出す必要はありませんか?私がこれをしなければ 'sklearn'が動揺していることをぼんやりと思い出します。 –

+0

@AmiTavoryデータ項目としてdfsやseriesを扱うことに関しては、最近sklearnの方がはるかに良いと思っていましたが、かなり頻繁に 'df.values'を渡しました。' np'はデータフレームでうまくいくと思います。 'np'が正しく' __array__'属性を呼び出していないが、最近頻繁に遭遇しなかったケース – EdChum

+0

ありがとう、ほとんど私はそこにいる。 df.ix [:, :: 2]を印刷すると、私はまだすべてのデータを元に戻しているようです。 np.unique()はまだ動作するはずです、そうですか? –

関連する問題