Какая строка является дополнительной в кадре данных? - PullRequest
0 голосов
/ 07 января 2019

У меня есть два dataframes, которые содержат рыночные данные на конец дня. Предполагается, что они содержат одинаковые даты начала и окончания, а также количество строк, но когда я печатаю len каждой, одна больше, чем другая:

DF1
            close
date              
2008-01-01   45.92
2008-01-02   45.16
2008-01-03   45.33
2008-01-04   42.09
2008-01-07   46.98
...
[2870 rows x 1 columns]

DF2

             close
date              
2008-01-01   60.48
2008-01-02   59.71
2008-01-03   58.43
2008-01-04   56.64
2008-01-07   56.98
...
[2871 rows x 1 columns]

Как я могу показать, какая строка либо:

  • имеет повторяющийся ряд,
  • или имеет дополнительную дату

, чтобы я мог удалить строку [вероятных] выходных / праздничных дней, которая находится в DF2, но не в DF1?

Я пробовал такие вещи, как:

df1 = df1.drop_duplicates(subset='date', keep='first')
df2 = df1.drop_duplicates(subset='date', keep='first')

но не могу заставить его работать [ValueError: not enough values to unpack (expected 2, got 0)].

Дополнительно:

Как удалить даты выходных из кадра данных?

1 Ответ

0 голосов
/ 07 января 2019

Может использовать .loc

DF2=DF2.loc[DF1.index]

Если проверочный индекс отличается между DF1 и DF2

DF2.index.difference(DF1.index)

Проверьте, имеет ли DF2 дублирующийся индекс

DF2[DF2.index.duplicated(keep=False)]

Проверьте выходные

df.index.weekday_name.isin(['Sunday','Saturday'])

Исправьте ваш код

df1 = df1.reset_index().drop_duplicates(subset='date', keep='first').reset_index('date')
df2 = df2.reset_index().drop_duplicates(subset='date', keep='first').reset_index('date')

Также для этого я рекомендую duplicated

df2 =df2 [df2.index.duplicated()]

О business

def B_day(date):
    return bool(len(pd.bdate_range(date, date)))

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