2016-06-24 3 views
2

私はPythonにはとても新しいので、私と一緒にお願いします。私は最初の行が私が扱う必要があるデータであるcsvファイルのフォルダを持っています。だから私は後でそれらを呼び出すことができるように列名を与える必要があります。各csvは同じ数の列を持ちます。私の練習では3つのコラムを使用しています。ファイルをループするときに列名を追加する

私は、単一のファイルにファイル名を追加する方法を理解する:

my_file = pd.read_csv('path\the_file.csv', names = ['first','second','third']) 

しかし、私は、CSVファイルの数が多いを通じて私のディレクトリおよびループに移動する必要があります。私は正直なところ、(悲しいことに私が知っている)それをどうやって行うかわからない。私はos.listdirを使用してファイル名をループすることができましたが、データが必要なときはそれほど役に立ちません。私はそれらの列名を取得したら何をすべきかを知っています。

可能な限りパンダを使用することが非常に好ましいです。私はたくさん見てきましたが、実際に動作するものは見つけられないようです。私は本当に助けに感謝します!

編集: これは私がやっていることの一部ですが、フォルダ内のすべてのcsvファイルに対して行う必要があります。だから、

my_file = pd.read_csv('path\the_file.csv', names=['first','second','third']) 
first_col = my_file['first'] 
second_col = my_file['second'] 
third_col = my_file['third'] 
key_codes = [] 
key_codes.append(second.map(str) + third.map(str)) 

列2は、「123」を持ち、3列目は、「4」を持っている場合、私はそれ以上のものをやっている「1234」を作ってるんだけど、今の私はどのように把握する必要がありファイルをループして、同じ名前/ヘッダーをすべて追加します。

+0

私は考えていません私はその問題を理解している。何が問題なのかを明確に説明してください。 – Julien

+0

こんにちは@wiredflamingo、私たちにあなたの歩みを見せることができますか?覚えておいてください、SOはコード工場でも、アウトソースコードでもありません。SOやソートにようこそ。 –

+0

すべてのファイルをループするとき、どのような出力が必要ですか?リストod 'DataFrames'?または、すべてのデータフレームを1つに連結する必要がありますか? – jezrael

答えて

0

IIUCあなたがglobを必要とする:

#glob can use path with *.txt - see http://stackoverflow.com/a/3215392/2901002 
import glob 
key_codes = [] 
for files in glob.glob('files/*.csv'): 
    df = pd.read_csv(files, names = ['first','second','third']) 
    key_codes.append(df.second.map(str) + df.third.map(str)) 

別の解決策をilocによりsecondthird列を選択すると、そこに取り外したパラメータnamesでもあるとread_csvheader=Noneを追加します。

#glob can use path with *.txt - see http://stackoverflow.com/a/3215392/2901002 
import glob 
key_codes = [] 
for files in glob.glob('files/*.csv'): 
    df = pd.read_csv(files, header=None) 
    key_codes.append(df.iloc[0,1].astype(str) + df.iloc[0,2].astype(str)) 
+0

ありがとう!以前はそのリンクが見えませんでした。私はあなたが実際に投稿したものと非常によく似たものを試していましたが、最終的にはすべての試みを見失いました。 – WiredFlamingo

関連する問題