将 csv 的内容复制到 pandas 中的单独 csv

copy contents of a csv in a separate csv in pandas

我有多个 csv 文件,每个文件有 2 列:

我希望将所有 csv 文件中的这两列复制到单个 csv 文件中,如下所示:

我的代码如下,但我只能将每个 csv 文件的最后一列(这将是峰值列)复制到一个文件中。我还需要将每个文件的时间列放入新文件中。我不知道如何将所有内容复制到一个文件中。有办法吗?请告诉我。

for col in columns:
    filelist = [ 'Peakvalues_no_iso_' + col + '_100.csv',
                 'Peakvalues_no_iso_' + col + '_350.csv',]
   
    result = pd.DataFrame()
    
    for f in filelist:
        df = pd.read_csv(f)
        last_col = df.columns[-1]
        result = result.join(df[last_col], how='outer')
    result.reset_index(inplace=True)
    
    # Converting result DF into a csv file
    result.to_csv('Peak_noiso_' + col + '.csv', index=False)

你可以concat 2 dataframes using axis=1:

import pandas as pd

data = list(range(3))

# not loading csv - should make no difference as your time values do not coincide
df1 = pd.DataFrame( {"A": data, "B": [d+10 for d in data]})
df2 = pd.DataFrame( {"A": [d+20 for d in data], "B": [d+30 for d in data]})

result = pd.concat( [df1,df2], axis=1)

print(df1)
print(df2)
print(result)

输出:

# df 1
   A   B
0  0  10
1  1  11
2  2  12 

# df 2
    A   B
0  20  30
1  21  31
2  22  32 

# pd.concat( [df1,df2], axis=1)
   A   B   A   B
0  0  10  20  30
1  1  11  21  31
2  2  12  22  32 

您可以将文件加载到列表中,然后使用 pandas.concat 将所有列加在一起。这适用于任意数量的文件。

这是更改后的代码:

for col in columns:
    filelist = [ 'Peakvalues_no_iso_' + col + '_100.csv',
                 'Peakvalues_no_iso_' + col + '_350.csv',]
   
    
    df_list = []
    
    for f in filelist:
        df = pd.read_csv(f)
        df_list.append(df)
        
    result = pd.concat(df_list, axis=1)
    result.reset_index(inplace=True)
    
    # Converting result DF into a csv file
    result.to_csv('Peak_noiso_' + col + '.csv', index=False)