Python 循环读取路径下的csv文件,并将相同列名的csv合并成新表
时间: 2023-07-16 18:13:53 浏览: 60
你可以使用 `pandas` 库来实现循环读取路径下的 csv 文件,并将相同列名的 csv 合并成新表。以下是一个示例代码:
```python
import os
import pandas as pd
path = 'your/path/to/csv/files'
files = os.listdir(path) # 获取路径下所有文件
csv_files = [f for f in files if f.endswith('.csv')] # 筛选出所有 csv 文件
df_list = []
for file in csv_files:
df = pd.read_csv(os.path.join(path, file)) # 读取 csv 文件
df_list.append(df)
# 将所有数据框按照相同列名进行合并
merged_df = pd.concat([df for df in df_list], axis=1, join='inner')
# 将合并后的数据框保存为新的 csv 文件
merged_df.to_csv('merged.csv', index=False)
```
上述代码中,首先获取指定路径下所有 csv 文件的文件名,然后使用 `pandas` 库的 `read_csv` 方法逐一读取每个 csv 文件,将其转换成数据框并存储在 `df_list` 中。接着使用 `pd.concat` 方法将所有数据框按照相同列名进行合并,最后将合并后的数据框保存为新的 csv 文件。
相关问题
两个csv文件都有内容的部分合并提取成新的csv文件
假设有两个csv文件:file1.csv和file2.csv,它们都有以下内容:
file1.csv:
| name | age | gender |
| ------ | --- | ------ |
| Alice | 25 | Female |
| Bob | 30 | Male |
| Charlie| 35 | Male |
file2.csv:
| name | occupation | salary |
| ------ | ----------| ------ |
| Alice | Engineer | 80000 |
| Bob | Salesman | 60000 |
| David | Doctor | 120000 |
现在我们要将这两个csv文件合并提取成一个新的csv文件。
方法一:使用Python的pandas库
1. 首先,导入pandas库:
```python
import pandas as pd
```
2. 然后,分别读取file1.csv和file2.csv文件:
```python
file1 = pd.read_csv('file1.csv')
file2 = pd.read_csv('file2.csv')
```
3. 接下来,使用pandas的merge函数将两个文件合并:
```python
merged_file = pd.merge(file1, file2, on='name')
```
这里的on参数指定了合并的键,即name列。
4. 最后,将合并后的结果保存为一个新的csv文件:
```python
merged_file.to_csv('merged_file.csv', index=False)
```
这里的index=False表示不保存行索引。
方法二:使用命令行工具
如果不想使用Python的pandas库,也可以使用命令行工具来合并csv文件。以下是一种方法:
1. 打开终端(Windows用户可以使用命令提示符或PowerShell)。
2. 进入存储csv文件的目录。
```bash
cd path/to/csv/files
```
3. 使用cat命令将两个文件合并,并将结果输出到一个新的文件中:
```bash
cat file1.csv file2.csv > merged_file.csv
```
这里的>符号表示将输出重定向到一个新的文件中。
4. 如果两个文件的列名不同,可以使用sed命令将列名改成相同的:
```bash
sed -i '1s/.*/name,age,gender,occupation,salary/' merged_file.csv
```
这里的1s表示只替换第一行,即列名行。name,age,gender,occupation,salary是新的列名。
注意:在使用sed命令时,建议先备份原始文件,以免出现错误。例如,可以使用以下命令备份:
```bash
cp merged_file.csv merged_file_backup.csv
```
将csv内不同的sheet下面的内容合并成新的csv
要将不同的CSV文件中的不同sheet的内容合并为一个新的CSV文件,您可以使用Python的pandas库。以下是一个示例代码:
```python
import pandas as pd
# 读取CSV文件
file1 = pd.read_csv("file1.csv")
file2 = pd.read_csv("file2.csv")
# 读取不同的sheet
sheet1_file1 = file1['Sheet1']
sheet2_file1 = file1['Sheet2']
sheet1_file2 = file2['Sheet1']
sheet2_file2 = file2['Sheet2']
# 合并内容
merged_data = pd.concat([sheet1_file1, sheet2_file1, sheet1_file2, sheet2_file2])
# 保存为新的CSV文件
merged_data.to_csv("merged.csv", index=False)
```
在上述代码中,首先使用`pd.read_csv()`函数读取不同的CSV文件,将其存储在不同的DataFrame对象中(在代码中替换为`file1.csv`和`file2.csv`)。然后,通过指定不同的sheet名称(在代码中替换为`Sheet1`和`Sheet2`)来获取对应的数据。接下来,使用`pd.concat()`函数将不同的数据合并为一个DataFrame对象。最后,使用`to_csv()`函数将合并后的数据保存为一个新的CSV文件(在代码中替换为`merged.csv`)。
请根据实际情况修改文件名、sheet名称和保存的文件名。
相关推荐
![m](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)