объединять различные кадры данных и добавлять другие столбцы из базового кадра данных - PullRequest
0 голосов
/ 29 августа 2018

Я пытаюсь объединить разные фреймы данных.

Предположим, эти два расплавленных 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 

Я пытался использовать встроенную в 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: You are trying to merge on object and datetime64[ns] columns. If you wish to proceed you should use pd.concat

Любая помощь приветствуется. Спасибо!

Ответы [ 3 ]

0 голосов
/ 29 августа 2018

Это должно сработать, так как указано, что некоторые даты в 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)
0 голосов
/ 29 августа 2018

Попробуйте напечатать типы данных и индекс DataFrames:

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

Я бы предположил, что один из DataFrames будет показывать строку вроде:

Date    X non-null object

Указывает, что у вас нет типа данных datetime для Date. Этот DataFrame является виновником, и у вас будет индекс из распечатки выше.

0 голосов
/ 29 августа 2018

Один из ваших фреймов данных в feature_dfs, вероятно, имеет dtype не-datetime.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...