Python pandasを使ってフォルダ内のすべてのcsvファイルを追加(マージ)します。例えばパンダのデータフレームを追加するときに列の順序が変わるのはなぜですか?
次のように言ってやるが、フォルダを2つのcsvファイルtest1.csv
とtest2.csv
を持っています
A_Id P_Id CN1 CN2 CN3
AAA 111 702 709 740
BBB 222 1727 1734 1778
と
A_Id P_Id CN1 CN2 CN3
CCC 333 710 750 750
DDD 444 180 734 778
次のようにだから私が書いたPythonスクリプトだった:
#!/usr/bin/python
import pandas as pd
import glob
all_data = pd.DataFrame()
for f in glob.glob("testfolder/*.csv"):
df = pd.read_csv(f)
all_data = all_data.append(df)
all_data.to_csv('testfolder/combined.csv')
combined.csv
には次のように行を付加し、それが見えます:
CN1 CN2 CN3 A_Id P_Id
0 710 750 750 CCC 333
1 180 734 778 DDD 444
0 702 709 740 AAA 111
1 1727 1734 1778 BBB 222
それは次のようになりますよう:最初の2列は、最後に移動され、なぜ
A_ID P_Id CN1 CN2 CN2
AAA 111 702 709 740
BBB 222 1727 1734 1778
CCC 333 110 356 123
DDD 444 220 256 223
- ?
- なぜ最後の行ではなく最初の行に追加されますか?
私は何が欠けていますか?そして、最初の列に0と1をどうやって得ることができますか?
P.S:これらは大きなcsvファイルなので、私はパンダを使用することを考えました。
パンダのどのバージョンを使用していますか?それは0.17.0でうまく動作するからです。 – jezrael
私は問題がcsvのフォーマットであると思っています - 行 'df = pd.read_csv(f)'の後に '' print df.head() 'をチェックしてみてください。 – jezrael
出力は入力ディレクトリ 'all_data.to_csv( 'testfolder/combined.csv')'に書き込まれているので、出力を 'glob.glob(" testfolder/*。csv "):'という入力として読み込んでいると思います。ディレクトリを 'all_data.to_csv( 'out/combined.csv')に変更する – jezrael