一次性将多个 .csv 文件导出为 .txt 文件
Export multiple .csv files into .txt files in one go
我有多个具有不同名称的 .csv 文件,例如 ATUL.csv、ISEC.csv、XYZ.csv 等等...每个文件都有类似的数据格式,如下所述:
datetime symbol open high low close volume
2005-03-10 09:15:00 NSE:ATUL 85.59 89.00 85.19 86.84 73582
2005-03-11 09:15:00 NSE:ATUL 89.44 89.80 85.50 85.94 153945
2005-03-14 09:15:00 NSE:ATUL 86.90 88.75 84.00 84.65 73539
2005-03-15 09:15:00 NSE:ATUL 85.00 85.94 82.00 82.40 79053
我想为每个 .csv 文件创建一个新的 .txt,格式如下:
- 删除 'symbol' 列
- 删除 header 行,即日期时间|符号|打开.....
- 将 'datetime' 列日期和时间格式更改为 YYYYMMDD
- 用“;”分隔每一列
下面给出了所需的格式示例以供理解。
20050310;85.59;89.00;85.19;86.84;73582
20050311;89.44;89.80;85.50;85.94;153945
20050314;86.90;88.75;84.00;84.65;73539
20050315;85.00;85.94;82.00;82.40;79053
我正在尝试使用下面的代码来获取我的输出
import pandas as pd
data = pd.read_csv('ATUL.csv')
data.drop('symbol', inplace=True, axis=1)
data['datetime'] = pd.to_datetime(data['datetime']).dt.strftime('%Y%m%d')
data.to_csv('output.txt', sep=';', header=None, index=False)
上面的代码工作得很好,但是它一次 creating/converting 一个文件,我的问题是上面的代码我一次只能转换一个文件,我有 500 多个文件必须每天更新。
有没有什么方法或代码可以将我所有的 .csv 文件转换为具有所需格式的文本文件(如上面的代码所述)
我不是Python专家,有我的解决方案可以解决你的问题。
首先将所有文件打包到一个目录中,然后使用 os
模块浏览。
编辑
import os
import pandas as pd
path = "path/to/directory/with/csv"
with os.scandir(path) as it:
for entry in it:
if entry.is_file() and entry.name.endswith(".csv"): # Treat only csv files
# Convert csv to txt with your code here
data = pd.read_csv(entry.name)
data.drop('symbol', inplace=True, axis=1)
data['datetime'] = pd.to_datetime(data['datetime']).dt.strftime('%Y%m%d')
data.to_csv('output.txt', sep=';', header=None, index=False)
如果您将路径值替换为您计算机上文件所在目录的实际路径,这应该有效。
这里的代码完全按照我之前 中的建议执行。
它利用 built-in pathlib
模块来简化处理。
import pandas as pd
from pathlib import Path
def export_csv(input_filepath, output_filepath):
"""Reformat input file and save result to the given output file path."""
data = pd.read_csv(input_filepath)
data.drop('symbol', inplace=True, axis=1)
data['datetime'] = pd.to_datetime(data['datetime']).dt.strftime('%Y%m%d')
data.to_csv(output_filepath, sep=';', header=None, index=False)
folderpath = Path('path/to/csv/files/folder').resolve()
new_suffix = '.txt'
# Convert all .csv files in given folder.
for input_filepath in folderpath.glob('*.csv'):
# Output file path is the same as the input file except it has a different
# extension.
output_filepath = input_filepath.with_suffix(new_suffix)
export_csv(input_filepath, output_filepath) # Convert the file.
我有多个具有不同名称的 .csv 文件,例如 ATUL.csv、ISEC.csv、XYZ.csv 等等...每个文件都有类似的数据格式,如下所述:
datetime symbol open high low close volume
2005-03-10 09:15:00 NSE:ATUL 85.59 89.00 85.19 86.84 73582
2005-03-11 09:15:00 NSE:ATUL 89.44 89.80 85.50 85.94 153945
2005-03-14 09:15:00 NSE:ATUL 86.90 88.75 84.00 84.65 73539
2005-03-15 09:15:00 NSE:ATUL 85.00 85.94 82.00 82.40 79053
我想为每个 .csv 文件创建一个新的 .txt,格式如下:
- 删除 'symbol' 列
- 删除 header 行,即日期时间|符号|打开.....
- 将 'datetime' 列日期和时间格式更改为 YYYYMMDD
- 用“;”分隔每一列
下面给出了所需的格式示例以供理解。
20050310;85.59;89.00;85.19;86.84;73582
20050311;89.44;89.80;85.50;85.94;153945
20050314;86.90;88.75;84.00;84.65;73539
20050315;85.00;85.94;82.00;82.40;79053
我正在尝试使用下面的代码来获取我的输出
import pandas as pd
data = pd.read_csv('ATUL.csv')
data.drop('symbol', inplace=True, axis=1)
data['datetime'] = pd.to_datetime(data['datetime']).dt.strftime('%Y%m%d')
data.to_csv('output.txt', sep=';', header=None, index=False)
上面的代码工作得很好,但是它一次 creating/converting 一个文件,我的问题是上面的代码我一次只能转换一个文件,我有 500 多个文件必须每天更新。
有没有什么方法或代码可以将我所有的 .csv 文件转换为具有所需格式的文本文件(如上面的代码所述)
我不是Python专家,有我的解决方案可以解决你的问题。
首先将所有文件打包到一个目录中,然后使用 os
模块浏览。
编辑
import os
import pandas as pd
path = "path/to/directory/with/csv"
with os.scandir(path) as it:
for entry in it:
if entry.is_file() and entry.name.endswith(".csv"): # Treat only csv files
# Convert csv to txt with your code here
data = pd.read_csv(entry.name)
data.drop('symbol', inplace=True, axis=1)
data['datetime'] = pd.to_datetime(data['datetime']).dt.strftime('%Y%m%d')
data.to_csv('output.txt', sep=';', header=None, index=False)
如果您将路径值替换为您计算机上文件所在目录的实际路径,这应该有效。
这里的代码完全按照我之前
它利用 built-in pathlib
模块来简化处理。
import pandas as pd
from pathlib import Path
def export_csv(input_filepath, output_filepath):
"""Reformat input file and save result to the given output file path."""
data = pd.read_csv(input_filepath)
data.drop('symbol', inplace=True, axis=1)
data['datetime'] = pd.to_datetime(data['datetime']).dt.strftime('%Y%m%d')
data.to_csv(output_filepath, sep=';', header=None, index=False)
folderpath = Path('path/to/csv/files/folder').resolve()
new_suffix = '.txt'
# Convert all .csv files in given folder.
for input_filepath in folderpath.glob('*.csv'):
# Output file path is the same as the input file except it has a different
# extension.
output_filepath = input_filepath.with_suffix(new_suffix)
export_csv(input_filepath, output_filepath) # Convert the file.