62220


やりたいこと：

  1. 添付画像のようなcsvファイルが複数ある
  2. 各ファイルからプロファイル１の列のデータを抽出
  3. 列方向にデータを結合
  4. csvファイルとして保存

[![画像の説明をここに入力](https://i.stack.imgur.com/uxYupm.png)](https://i.stack.imgur.com/uxYupm.png)

[code]

    import csv
    import glob
    import os
    import pandas as pd
    
    df_dir = './sample1'
    df_file = '*.csv'
    
    if __name__ == "__main__":
       for f in glob.glob(os.path.join(df_dir, df_file)):
           with open(f) as file:
               df = pd.read_csv(file, header=2,usecols=[1])
           df_tp = df.transpose()
           with open('./transpose.csv','a') as g:
               writer = csv.writer(g, lineterminator='\n')
               writer.writerows(df_tp)
    
[/code]

こんな感じで書いていますが、

[code]

    Error: iterable expected, not int
    
[/code]

というエラーが出てしまいます。  
df_tpの中身を見てみると、プロファイル１の数値だけでなくデータ番号(画像のNo.ではなく抽出後のナンバリング(？))も含まれてしまっているのが原因な気がしますがその取り除き方がわかりません。  
[![画像の説明をここに入力](https://i.stack.imgur.com/EMGww.png)](https://i.stack.imgur.com/EMGww.png)

わかる方いらっしゃいましたらご教示願います。


CC BY-SA 4.0
2020-01-13T06:18:49.650
62201
2020-01-13T23:41:38.180
2020-01-13T08:10:10.827
3060
36204
question
python pandas csv
pythonで複数のcsvファイルから特定の列を抽出して結合させたい


既にコメントにて解決しているようですが、もう一つ別の方法として、元のcsvから1つの列だけ取り出すなら`pandas`やDataFrame操作が不要になる以下のやり方が取れるでしょう。  
変更部分にコメントを付けています。

[code]

    import csv
    import glob
    import os
    
    df_dir = './sample1'
    df_file = '*.csv'
    
    if __name__ == "__main__":
       for f in glob.glob(os.path.join(df_dir, df_file)):
          with open(f) as file:
             reader = csv.reader(file)  # pandas ではなく csv を使う
             next(reader)  # 不要な行をスキップ
             next(reader)
             valuelist = [row[1] for row in reader]  # リスト内包表記で指定の列を抽出
          with open('./transpose.csv','a') as g:
              writer = csv.writer(g, lineterminator='\n')
              writer.writerow(valuelist)  # writerows を writerow に変更
    
[/code]


CC BY-SA 4.0
2020-01-13T23:41:38.180
62220
2020-01-13T23:41:38.180
26370
62201
answer