Python 合并不同的数据帧并从基本数据帧添加其他列

Python 合并不同的数据帧并从基本数据帧添加其他列,python,python-3.x,pandas,Python,Python 3.x,Pandas,我正在尝试合并不同的数据帧 假设这两个数据帧融为一体 dfs[0]= Date Code delta_7 0 2014-04-01 GWA 0.08 1 2014-04-02 TVV -0.98 dfs[1]= Date Code delta_14 0 2014-04-01 GWA nan 1 2014-04-02 XRP

我正在尝试合并不同的数据帧

假设这两个数据帧融为一体

dfs[0]
=

        Date      Code       delta_7
0   2014-04-01     GWA        0.08
1   2014-04-02     TVV       -0.98
dfs[1]=

       Date       Code       delta_14
0   2014-04-01     GWA         nan
1   2014-04-02     XRP       -1.02
我希望将上述两个数据框与我的基本数据框中的
volume
&
GR
列合并

base\u df=

     Date         Code      Volume       GR
0   2014-04-01     XRP    74,776.48    482.76
1   2014-04-02     TRR   114,052.96    460.19 
我试图使用Python内置的
reduce
函数,将所有数据帧转换为一个列表,但它抛出了一个错误

abt = reduce(lambda x,y: pd.merge(x,y,on=['Date', 'Code']), feature_dfs)
# feature_dfs is a list which contains all the above dfs.
ValueError:您正在尝试合并对象和datetime64[ns]列。如果您希望继续,应使用pd.concat


感谢您的帮助。谢谢

feature\u dfs中的一个数据帧可能有一个非日期时间数据类型。

feature\u dfs中的一个数据帧可能有一个非日期时间数据类型。

这应该可以工作,因为它说明df的一些日期不是日期时间格式

feature_dfs=[x.assign(Date=pd.to_datetime(x['Date'])) for x in feature_dfs]

abt = reduce(lambda x,y: pd.merge(x,y,on=['Date', 'Code']), feature_dfs)

这应该是可行的,因为df的一些日期不是日期时间格式

feature_dfs=[x.assign(Date=pd.to_datetime(x['Date'])) for x in feature_dfs]

abt = reduce(lambda x,y: pd.merge(x,y,on=['Date', 'Code']), feature_dfs)

尝试打印数据帧的数据类型和索引:

for i, df in enumerate(feature_dfs):
    print 'DataFrame index: {}'.format(str(i))
    print df.info()
    print '-'*72
我假设其中一个数据帧将显示一行,如:

Date    X non-null object

表示您没有日期的日期时间数据类型。该数据帧是罪魁祸首,您将获得上面打印的索引。

尝试打印数据帧的数据类型和索引:

for i, df in enumerate(feature_dfs):
    print 'DataFrame index: {}'.format(str(i))
    print df.info()
    print '-'*72
我假设其中一个数据帧将显示一行,如:

Date    X non-null object

表示您没有日期的日期时间数据类型。该数据帧是罪魁祸首,您将获得上面打印的索引。

这就解决了它。谢谢温家宝,这就解决了。谢谢温家宝。其中一个dfs没有日期时间数据类型。谢谢。其中一个dfs没有日期时间数据类型。谢谢