将相同的操作应用于不同的数据帧
applying the same operation to different dataframes
找不到关于此的任何信息 python...
我一直在为一些机器学习项目处理三个不同的数据集,对于不同数据框架上的相同操作,以完全相同的方式输入相同的命令是一项艰巨的任务……它是从这个开始的:
aviva = pd.read_csv('data/LON_AV_.csv', parse_dates=['Date'], index_col='Date', date_parser=dateparse )
admiral= pd.read_csv('data/LON_ADM.csv', parse_dates=['Date'], index_col='Date', date_parser=dateparse )
three = pd.read_csv('data/LON_III.csv', parse_dates=['Date'], index_col='Date', date_parser=dateparse )
中间有许多命令应用于每个数据帧,它们是相同的
并以此结尾:
three.to_csv('three_x.csv')
three_label.to_csv('three_y.csv')
admiral.to_csv('admiral_x.csv')
admiral_label.to_csv('admiral_y.csv')
aviva.to_csv('aviva_x.csv')
aviva_label.to_csv('aviva_y.csv')
我想问你们的问题是,你们有什么方法可以加快这个过程,这样我就不必一直重复这样的代码了吗?
谢谢你们,祝你们有美好的一天
而不是三个 DataFrame,aviva
、admiral
、three
,使用一个 dict
和映射到 DataFrame 的同名键:
dfs = dict()
for filename, name in [('LON_AV_.csv', 'aviva'),
('LON_ADM.csv', 'admiral'),
('LON_III.csv', 'three')]:
dfs[name] = pd.read_csv('data/{}'.format(filename), parse_dates=['Date'],
index_col='Date', date_parser=dateparse)
...
dfs[name].to_csv('{}_x.csv'.format(name))
label[name].to_csv('{}_y.csv'.format(name))
我会这样做:
in_csv_template = 'data/LON_{}.csv'
out_csv_template = 'out/{}_x.csv'
out_label_template = 'out/{}_y.csv'
cfg = {
'aviva': 'AV_',
'admiral': 'ADM',
'three': 'III',
}
def process(fi_csv, fo_csv, fo_label, **kwargs):
df = pd.read_csv(fi_csv, **kwargs)
...
df.to_csv(fo_csv)
df_label.to_csv(fo_label)
for k,v in cfg.items():
process(in_csv_template.format(v),
out_csv_template.format(k),
out_label_template.format(k),
parse_dates=['Date'],
index_col='Date',
date_parser=dateparse)
找不到关于此的任何信息 python... 我一直在为一些机器学习项目处理三个不同的数据集,对于不同数据框架上的相同操作,以完全相同的方式输入相同的命令是一项艰巨的任务……它是从这个开始的:
aviva = pd.read_csv('data/LON_AV_.csv', parse_dates=['Date'], index_col='Date', date_parser=dateparse )
admiral= pd.read_csv('data/LON_ADM.csv', parse_dates=['Date'], index_col='Date', date_parser=dateparse )
three = pd.read_csv('data/LON_III.csv', parse_dates=['Date'], index_col='Date', date_parser=dateparse )
中间有许多命令应用于每个数据帧,它们是相同的
并以此结尾:
three.to_csv('three_x.csv')
three_label.to_csv('three_y.csv')
admiral.to_csv('admiral_x.csv')
admiral_label.to_csv('admiral_y.csv')
aviva.to_csv('aviva_x.csv')
aviva_label.to_csv('aviva_y.csv')
我想问你们的问题是,你们有什么方法可以加快这个过程,这样我就不必一直重复这样的代码了吗? 谢谢你们,祝你们有美好的一天
而不是三个 DataFrame,aviva
、admiral
、three
,使用一个 dict
和映射到 DataFrame 的同名键:
dfs = dict()
for filename, name in [('LON_AV_.csv', 'aviva'),
('LON_ADM.csv', 'admiral'),
('LON_III.csv', 'three')]:
dfs[name] = pd.read_csv('data/{}'.format(filename), parse_dates=['Date'],
index_col='Date', date_parser=dateparse)
...
dfs[name].to_csv('{}_x.csv'.format(name))
label[name].to_csv('{}_y.csv'.format(name))
我会这样做:
in_csv_template = 'data/LON_{}.csv'
out_csv_template = 'out/{}_x.csv'
out_label_template = 'out/{}_y.csv'
cfg = {
'aviva': 'AV_',
'admiral': 'ADM',
'three': 'III',
}
def process(fi_csv, fo_csv, fo_label, **kwargs):
df = pd.read_csv(fi_csv, **kwargs)
...
df.to_csv(fo_csv)
df_label.to_csv(fo_label)
for k,v in cfg.items():
process(in_csv_template.format(v),
out_csv_template.format(k),
out_label_template.format(k),
parse_dates=['Date'],
index_col='Date',
date_parser=dateparse)