私のpythonコードは、以下の例では正しく機能します。私のコードは、CSVファイルのディレクトリを組み合わせてヘッダーを照合します。ただし、さらに一歩踏み出したいと思います。使用されたCSVのファイル名を追加しますか?
import pandas as pd
import glob
globbed_files = glob.glob("*.csv") #creates a list of all csv files
data = [] # pd.concat takes a list of dataframes as an agrument
for csv in globbed_files:
frame = pd.read_csv(csv)
data.append(frame)
bigframe = pd.concat(data, ignore_index=True) #dont want pandas to try an align row indexes
bigframe.to_csv("Pandas_output2.csv")
これはうまくいくはずです:
_import os
for csv in globbed_files:
frame = pd.read_csv(csv)
frame['filename'] = os.path.basename(csv)
data.append(frame)
_
_frame['filename']
_はfilename
という名前の新しい列を作成し、os.path.basename()
は_/a/d/c.txt
_のようなパスをファイル名_c.txt
_に変換します。
上記のマイクの答えは完全に機能します。グーグルが次のエラーに遭遇した場合:
>>> TypeError: cannot concatenate object of type "<type 'str'>";
only pd.Series, pd.DataFrame, and pd.Panel (deprecated) objs are valid
セパレータが正しくない可能性があります。カスタムcsvファイルを使用していたため、区切り記号は^
でした。そのため、pd.read_csv
呼び出しに区切り文字を含める必要がありました。
import os
for csv in globbed_files:
frame = pd.read_csv(csv, sep='^')
frame['filename'] = os.path.basename(csv)
data.append(frame)