Панды, объединяющие 2 кадра данных в похожих столбцах (это индекс) - PullRequest
0 голосов
/ 09 мая 2018

У меня есть два кадра данных, которые в обоих случаях я установил в качестве индекса timeStamp. df_1.set_index('timeStamp', inplace=True).

df_1

                     value
timeStamp                 
2016-11-23 20:00:00  37.21
2016-11-23 21:00:00  37.79
2016-11-23 22:00:00  33.99
2016-11-23 23:00:00  32.66
2016-11-24 00:00:00  31.61

df_2

                     value
timeStamp                 
2016-11-23 23:00:00  32.92
2016-11-24 00:00:00  31.54
2016-11-24 01:00:00  29.14

Я хотел создать фрейм данных, сравнивающий оба значения при совместном использовании времени. Я попытался combined_df= pd.merge(df_real, df_fc, on='timeStamp', how='inner') и получил key error.

Таким образом, вместо объединения двух фреймов данных в индексе я сохранил фреймы данных без 'timeStamp' в качестве индекса. Например.

df Я использовал вместо этого для слияния

             timeStamp  value
0  2016-11-23 20:00:00  37.21
1  2016-11-23 21:00:00  37.79
2  2016-11-23 22:00:00  33.99
3  2016-11-23 23:00:00  32.66
13 2016-11-24 00:00:00  31.61

Затем я смог объединиться, и мой новый df был установлен (показано ниже). Затем я также установил индекс на отметку времени, позже.

            timeStamp  value_x  value_y 
0  2016-11-23 23:00:00    32.66    32.92 

мой вопрос Почему я не могу объединить имя столбца, указанное в качестве индекса? Я хотел установить это слияние на новый фрейм данных ...

Ответы [ 4 ]

0 голосов
/ 09 мая 2018

попробуйте это:

df_real.merge(df_fc, on='timeStamp', how='inner')

тестовый код:

import pandas as pd
d = {'time1': ['A', 'B'], 'val1': [2, 4]}
df = pd.DataFrame(data=d)
df.set_index('time1')

d1 = {'time1': ['A', 'B','C'], 'val1': [5, 6, 9]}
df2 = pd.DataFrame(data=d1)
df2.set_index('time1')

df.merge(df2, on = 'time1')

вывод:

    time1   val1_x  val1_y
  0    A       2      5
  1    B       4      6
0 голосов
/ 09 мая 2018

Вы должны указать, что вы объединяете по индексу:

pd.merge(df_1, df_2, left_index=True, right_index=True, how='inner')
0 голосов
/ 09 мая 2018

Объединение / объединение DataFrame

pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None,
         left_index=False, right_index=False, sort=True,
         suffixes=('_x', '_y'), copy=True, indicator=False,
         validate=None)

https://pandas.pydata.org/pandas-docs/stable/merging.html

0 голосов
/ 09 мая 2018

Я верю, что вы МОЖЕТЕ слить по индексу. Вы просто, кажется, использовали неправильный синтаксис. Вместо указания on вы должны попробовать использовать left_index и right_index.

См. Документацию для слияний здесь

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