【发布时间】:2013-07-07 13:04:32
【问题描述】:
我有两个 csv 文件
1:eurusd.csv 2:xauusd.csv
文件中没有标题,但数据是日期时间、开盘价、最高价、最低价、收盘价、成交量。每个文件都有以下类型的数据...
eurusd.csv:
02/23/2009 18:01,1.27090,1.27110,1.27040,1.27050,204
02/23/2009 18:02,1.27060,1.27060,1.27000,1.27040,211
02/23/2009 18:03,1.27040,1.27050,1.27010,1.27040,82
02/23/2009 18:04,1.27020,1.27080,1.27020,1.27060,98
xauusd.csv
02/23/2009 18:01,991.260,992.120,990.800,991.840,69
02/23/2009 18:02,991.800,992.260,991.200,991.870,74
02/23/2009 18:04,991.820,991.830,990.700,991.320,74
我想根据日期时间列合并数据,该列是两个文件中的第一列。如您所见,第二个文件与第一个文件没有完全相同的记录,因此缺少第二个文件中的一些数据,但没关系。我想根据它们之间的匹配日期磁贴字段将 Close 列从第二个文件带到第一个文件
所以最终合并的 csv 文件将具有以下列... 日期时间、开盘价、最高价、最低价、收盘价、成交量、CloseFromSecondCsv
合并的.csv
02/23/2009 18:01,1.27090,1.27110,1.27040,1.27050,204,991.840
02/23/2009 18:02,1.27060,1.27060,1.27000,1.27040,211,991.870
02/23/2009 18:03,1.27040,1.27050,1.27010,1.27040,82,0
02/23/2009 18:04,1.27020,1.27080,1.27020,1.27060,98,991.320
我不知道该怎么做。提前致谢
基于 TomAugspurger 回答的最终工作代码:
import pandas as pd
df1 = pd.read_csv("C:\IQFEED\XAUUSDO.COMP_1.csv", index_col=0, names=['time', 'open', 'high', 'low', 'close', 'volume'], parse_dates=True)
df2 = pd.read_csv("C:\IQFEED\EURUSD.COMP_1.csv", index_col=0, names=['time', 'open', 'high', 'low', 'close', 'volume'], parse_dates=True)
df2['other_close'] = df1['close']
df2.fillna(0)
df2.to_csv('C:\IQFEED\python.csv')
我发现只能使用列号...
import pandas as pd
df1 = pd.read_csv("C:\IQFEED\XAUUSD.txt", index_col=0, usecols=[0,4], parse_dates=True, header=None)
df2 = pd.read_csv("C:\IQFEED\EURUSD.txt", index_col=0, usecols=[0,1,2,3,4,5], parse_dates=True, header=None)
df2[6] = df1[4]
df2.to_csv('C:\IQFEED\python1.csv')
【问题讨论】:
-
他们是不是打算在不同的日子(这是错字)?我不明白这有什么意义(为什么只复制 Close 值?)
-
安迪,对不起,这是我的错误。这是一个错字,我修复了它并编辑了原始帖子。为什么只复制收盘价是我使用的是 Altreva Adaptive Modeler,它允许基于单个工具进行建模,最新版本还允许您在建模中添加另一个数据点,所以我选择使用黄金收盘价建模师。我只能使用单个附加列,否则将使用第二个 csv 文件中的所有列,但现在只关闭或列 #4。
标签: python csv merge pandas forex