1

現在、csvファイルを1つに結合し、同様の列を複製しないプログラムを作成しています。作成された列は、隣接する列の次に追加する必要があります。

現在、ファイルを取得することはできますが、読み取ったcsvごとにデータフレームを反復処理し、これらのデータフレームをすべてマージしてcsvファイルをプッシュする方法を開発する方法を決定できません。現在、共通の ID 列を持つ 3 つの csv ファイルでこれをテストしています。現在持っているものは次のとおりです。

        os.chdir(filedname)
        data = pd.merge([pd.DataFrame.from_csv(file) for
              file in glob.glob("*.csv")],on='ID')
        data.to_csv('merged.csv')

ファイルは次のようになります。

(File 1)  (File 2)
ID  BLA   ID  X   
1   2     1   55
2   3     2   2
3   4     3   12
4   5     4   52

また、ディレクトリ内の各 csv ファイルの ID 列以外の各列を互いにマージして、次のような 1 つの csv ファイルを作成する必要があります。

ID BLA X
1  2   55
2  3   2
3  4   12
4  5   52 

この問題を解決するのに役立つアドバイスは素晴らしいでしょう。

4

1 に答える 1

2

簡単な例:

# Demo DataFrames
df1 = pd.DataFrame([[1,2,3],[2,3,4],[3,1,3]], columns=['ID','BLA','X'])
df2 = pd.DataFrame([[1,2,3],[2,5,4],[3,10,100]], columns=['ID','X','BLA'])
df3 = pd.DataFrame([[1,2,3],[2,8,7],[3,0,0]], columns=['ID','BLA','D'])

# Demo DataFrames sequence
dfs = [df1,df2,df3]

# Merge DataFrames
df = pd.DataFrame(columns=['ID'])
for d in dfs:
    cols = [x for x in d.columns if x not in df.columns or x == 'ID']
    df = pd.merge(df, d[cols], on='ID', how='outer', suffixes=['',''])

# result
   ID  BLA  X  D
0   1    2  3  3
1   2    3  4  7
2   3    1  3  0

あなたの場合、それは次のようなものかもしれません:

data = [pd.DataFrame.from_csv(f) for f in glob.glob("*.csv")]
df = pd.DataFrame(columns=['ID'])
for d in data:
    cols = [x for x in d.columns if x not in df.columns or x == 'ID']
    df = pd.merge(df, d[cols], on='ID', how='outer', suffixes=['',''])    
于 2013-11-13T20:50:52.480 に答える