将 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)
我有多个 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)