代码之家  ›  专栏  ›  技术社区  ›  Sai Kumar

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

  •  0
  • Sai Kumar  · 技术社区  · 6 年前

    假设这两个融化了 dataframes .

    melted_dfs[0] =

            Date      Code       delta_7
    0   2014-04-01     GWA        0.08
    1   2014-04-02     TVV       -0.98
    

    melted_dfs[1] =

           Date       Code       delta_14
    0   2014-04-01     GWA         nan
    1   2014-04-02     XRP       -1.02
    

    我期待着合并以上两个数据帧连同 volume GR 我的基础列 dataframe .

    base_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 
    

    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: You are trying to merge on object and datetime64[ns] columns. If you wish to proceed you should use pd.concat

    3 回复  |  直到 6 年前
        1
  •  1
  •   BENY    6 年前

    这应该是可行的,因为它说明了df的一些日期不是datetime格式

    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)
    
        2
  •  1
  •   ChrisD    6 年前

    其中一个数据帧 feature_dfs 可能有一个非datetime数据类型。

        3
  •  1
  •   it's-yer-boy-chet    6 年前

    for i, df in enumerate(feature_dfs):
        print 'DataFrame index: {}'.format(str(i))
        print df.info()
        print '-'*72
    

    我假设其中一个数据帧将显示一行,如:

    Date    X non-null object
    

    表示没有Date的datetime数据类型。这个数据帧是罪魁祸首,您将拥有上面打印的索引。