python指定多个csv文件拼接/遍历当前文件夹中所有csv文件并横向拼接/仅拼接第二列

一、指定多个csv文件拼接:

import pandas as pd
 
df1 = pd.read_csv(r"1.csv", encoding='gbk') #读取当前文件夹中文件
 #指定路径的文件则改为(r'C:/Users/Administrator/Desktop/angular_velocity/1.csv')
df2 = pd.read_csv(r"2.csv", encoding='gbk') #需手动更改添加所有文件名称df3、df4...

file = [df1, df2]
 
outfile = pd.concat(file, axis=1) #横向拼接

outfile = pd.concat(file, axis=0) #竖向拼接
 
outfile.to_csv("WhatUWant.csv",index=0, sep=',') #输出文件名WhatUWant.csv
 
print(outfile.shape) #查看文件大小

二、遍历当前文件夹中所有csv文件并横向拼接:

方法一:使用glob方法和pandas库

import glob
import pandas as pd

# 获取所有CSV文件路径
csv_list = glob.glob('*.csv')

# 创建一个空的DataFrame用于存储合并后的数据
merged_data = pd.DataFrame()

# 遍历所有CSV文件
for csv_file in csv_list:
    # 读取CSV文件数据
    df = pd.read_csv(csv_file)
    # 横向拼接数据
    merged_data = pd.concat([merged_data, df], axis=1)

# 保存合并后的数据到新的CSV文件
merged_data.to_csv('合并.csv', index=False)

方法二:使用pandas库的concat方法

import pandas as pd

# 创建一个空的DataFrame用于存储合并后的数据
merged_data = pd.DataFrame()

# 遍历所有CSV文件
for i in range(1, 3):
    # 读取CSV文件数据
    df = pd.read_csv(f'文件-{i}.csv')
    # 横向拼接数据
    merged_data = pd.concat([merged_data, df], axis=1)

# 去除重复数据
merged_data.drop_duplicates(inplace=True)

# 保存合并后的数据到新的CSV文件
merged_data.to_csv('合并.csv', index=False, encoding='utf-8')

三、遍历文件夹中所有csv文件并横向拼接每个csv的第二列:

当前路径:

import glob
import pandas as pd

# 获取所有CSV文件路径
csv_list = glob.glob('*.csv')

# 创建一个空的DataFrame用于存储合并后的数据
merged_data = pd.DataFrame()

# 遍历所有CSV文件
for csv_file in csv_list:
    # 读取CSV文件数据
    df = pd.read_csv(csv_file)
    
    # 提取每个文件的第二列数据
    column = df.iloc[:, 1]
    
    # 将提取的数据添加到合并后的DataFrame中
    merged_data = pd.concat([merged_data, column], axis=1)

# 保存合并后的数据到新的CSV文件
merged_data.to_csv('合并第二列.csv', index=False)

指定路径:

import os
import pandas as pd

# 获取文件夹路径
folder_path = r"文件夹路径"

# 初始化一个空的DataFrame用于存储拼接结果
result = pd.DataFrame()

# 遍历文件夹中的所有文件
for file_name in os.listdir(folder_path):
    # 判断文件是否为CSV文件
    if file_name.endswith(".csv"):
        # 构建文件的完整路径
        file_path = os.path.join(folder_path, file_name)
        
        # 读取CSV文件
        df = pd.read_csv(file_path, encoding='gbk')
        
        # 获取文件的第二列数据
        column_data = df.iloc[:, 1]
        
        # 将第二列数据添加到结果DataFrame中
        result = pd.concat([result, column_data], axis=1)

# 将结果保存为CSV文件
result.to_csv("合并第二列.csv", index=False)

# 打印结果DataFrame的大小
print(result.shape)

#学习备份

  • 9
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
您可以使用Python的pandas和os模块来完成此操作。 以下是实现的步骤: 1. 导入必要的模块 ```python import pandas as pd import os ``` 2. 定义一个函数,用于读取csv文件并返回指定列的数据 ```python def read_csv_file(filename, column): df = pd.read_csv(filename, header=None, usecols=[column]) return df ``` 这个函数将读取文件,并使用pandas的read_csv()方法读取指定的列,忽略表头(由于header参数设置为None)。usecols参数指定要读取的列。 3. 定义一个空的DataFrame对象,用于保存所有文件的数据 ```python combined_data = pd.DataFrame() ``` 4. 使用os模块遍历文件夹的所有csv文件,并将它们的数据添加到combined_data ```python folder_path = r"/path/to/folder" for filename in os.listdir(folder_path): if filename.endswith(".csv"): file_path = os.path.join(folder_path, filename) column_data = read_csv_file(file_path, 1) combined_data = pd.concat([combined_data, column_data], ignore_index=True) ``` 这个循环将遍历文件夹的所有csv文件,并对每个文件调用read_csv_file()函数。然后,使用pandas的concat()方法将读取的列数据添加到combined_data。 ignore_index参数设置为True,以确保新DataFrame的索引是连续的。 5. 将数据保存到文件 ```python combined_data.to_csv("combined_data.csv", index=False, header=False) ``` 这将把所有文件第二列数据拼接成一列,忽略表头,并保存到combined_data.csv文件。 完整代码如下: ```python import pandas as pd import os def read_csv_file(filename, column): df = pd.read_csv(filename, header=None, usecols=[column]) return df combined_data = pd.DataFrame() folder_path = r"/path/to/folder" for filename in os.listdir(folder_path): if filename.endswith(".csv"): file_path = os.path.join(folder_path, filename) column_data = read_csv_file(file_path, 1) combined_data = pd.concat([combined_data, column_data], ignore_index=True) combined_data.to_csv("combined_data.csv", index=False, header=False) ``` 请将`/path/to/folder`替换为实际的文件夹路径。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值