使用python将三个csv文件的表合并,三个表列名是相同的,连接方式是D列的数据和E列的数据都存在的行输出,不满足的不输出
import pandas as pd
df1 = pd.read_csv('file1.csv')
df2 = pd.read_csv('file2.csv')
df3 = pd.read_csv('file3.csv')
merged_df = pd.merge(df1, df2, on=['D', 'E'])
merged_df = pd.merge(merged_df, df3, on=['D', 'E'])
merged_df.to_csv('merged_file.csv', index=False)
将第二列的内容保存到 hist_column中,第一列的话采用row[0]
with open(source_path+CsvFile[leng],'rt',encoding='utf-8') as histfile:
hist_reader = csv.reader(histfile)
hist_column =[row[1] for row in hist_reader]
对第一列的内容进行处理
(本文中的例子是对数据进行处理,通过仿真后的数据会带有单位(皮秒psec或者飞秒fsec),要把单位去掉,统一为皮秒,如果是飞秒的话要乘以0.001)
将修改后的数据重新赋值给column, 这里重新赋值后不能将csv中的数据最终修改掉,尝试了很多种方法都不行,如果大家有更好的方法可以分享出来,我的代码如下:
with open(source_path+CsvFile[leng],'rt',encoding='utf-8') as csvfile:
reader = csv.reader(csvfile)
column =[row[0] for row in reader]
# hist_number = [row[1] for row in reader]
# print(len(hist_number))
for i in range(len(column)):
if('psec' in column[i]):
column[i] = column[i].replace('psec', '')
elif ('fsec' in column[i]):
column[i] = column[i].replace('fsec', '')
column[i] = float(column[i])*0.001
column[i] = str(column[i])
elif('sec' in column[i] and 'E' in column[i]):
column[i] = str(0)
else:
column[i] = column[i]
这里遇到了几个问题:
首先,我们需要将三个csv文件读取并解析成数据表的形式。然后,我们可以使用Python的pandas库来合并这些表,并根据条件筛选出符合要求的行。最后,我们将合并后的数据表输出到一个新的csv文件中。
下面是一个示例代码来完成这个任务:
首先,我们需要安装pandas库,可以使用以下命令来安装:
pip install pandas
然后,我们可以使用以下代码来实现合并和筛选的功能:
import pandas as pd
# 读取三个csv文件并解析成数据表
csv1 = pd.read_csv('file1.csv')
csv2 = pd.read_csv('file2.csv')
csv3 = pd.read_csv('file3.csv')
# 合并三个数据表
merged = pd.merge(csv1, csv2, on=['D', 'E'], how='inner')
merged = pd.merge(merged, csv3, on=['D', 'E'], how='inner')
# 将合并后的数据表输出到新的csv文件
merged.to_csv('merged.csv', index=False)
在上面的代码中,我们首先使用pd.read_csv
函数读取每个csv文件,并将其解析成数据表的形式。然后,我们使用pd.merge
函数来合并这些数据表,将on=['D', 'E']
用于指定根据哪些列来进行合并,将how='inner'
用于指定只输出那些D列和E列的数据都存在的行。
最后,我们使用to_csv
函数将合并后的数据表输出到一个新的csv文件中,其中index=False
用于指定不输出行索引。
请确保将代码中的file1.csv
,file2.csv
和file3.csv
替换为你自己的csv文件路径,并运行代码来实现合并和筛选的功能。合并后的结果将保存在merged.csv
文件中。