python实现按指定列指定字符串匹配拆分csv文件,并输出符合条件的所有数据
时间: 2023-12-27 22:03:07 浏览: 31
要实现按指定列指定字符串匹配拆分csv文件,并输出符合条件的所有数据,可以使用pandas库来实现。以下是一个示例代码:
```python
import pandas as pd
# 读取csv文件
df = pd.read_csv('example.csv')
# 按指定列拆分并匹配字符串
for col in ['col1', 'col3']:
# 获取指定列的数据
col_data = df[col]
# 匹配字符串并获取符合条件的行
condition = col_data.str.contains('match_string')
matched_data = df[condition]
# 输出符合条件的数据并创建新的csv文件
if not matched_data.empty:
print(matched_data)
matched_data.to_csv(f'{col}_matched.csv', index=False)
```
这段代码将会把名为`example.csv`的文件按照指定的列`col1`和`col3`拆分成两个文件,然后在每个文件中匹配字符串`match_string`,并输出符合条件的所有数据。同时,还会在文件夹中创建新的csv文件,文件名为`col1_matched.csv`和`col3_matched.csv`,文件中仅包含符合条件的数据,不包含列头。如果需要包含列头,只需在每个拆分的文件中添加`header=[col]`参数即可。
相关问题
python实现按指定列拆分csv文件
如果要按照指定的列拆分csv文件,可以使用pandas库来实现。以下是一个简单的示例代码:
```python
import pandas as pd
# 读取csv文件
df = pd.read_csv('example.csv')
# 按指定列拆分
for col in ['col1', 'col3']:
# 获取指定列的数据
col_data = df[col]
# 创建新的csv文件并写入数据
col_data.to_csv(f'{col}.csv', index=False)
```
这段代码将会把名为`example.csv`的文件按照指定的列`col1`和`col3`拆分成两个文件,文件名分别为`col1.csv`和`col3.csv`,文件中仅包含对应列的数据,不包含列头。如果需要包含列头,只需在每个拆分的文件中添加`header=[col]`参数即可。
python按指定列拆分csv文件
您可以使用Python的csv模块来按指定列拆分CSV文件。以下是一个示例代码,可以按照您指定的列拆分CSV文件:
```python
import csv
def split_csv(input_file, output_files, column):
with open(input_file, 'r') as file:
reader = csv.reader(file)
headers = next(reader) # 获取CSV文件的头部
output_writers = {}
for output_file in output_files:
output_writers[output_file] = csv.writer(open(output_file, 'w', newline=''))
output_writers[output_file].writerow(headers) # 将头部写入每个拆分文件
for row in reader:
column_value = row[column] # 获取指定列的值
output_writers[column_value].writerow(row) # 将行写入对应的拆分文件
for output_file in output_files:
output_writers[output_file].close()
input_file = 'input.csv'
output_files = ['output1.csv', 'output2.csv'] # 拆分后的输出文件列表
column = 2 # 指定用于拆分的列索引
split_csv(input_file, output_files, column)
```
在上述代码中,您需要指定输入文件的路径(`input_file`)和输出文件的列表(`output_files`),以及用于拆分的列索引(`column`)。代码将按照指定列的值将行写入对应的拆分文件中。
请注意,此示例代码假设CSV文件的第一行是头部,并将头部写入每个拆分文件。您可以根据需要进行调整。