как интегрировать дублированный индекс? - PullRequest
0 голосов
/ 10 октября 2019

Предположим, у меня есть фрейм данных, ABC, который выглядит следующим образом:

                   a     b     c    d    e
    2016-06-01     3     6    NAN   4    8
    2016-06-01     3    NAN    5   NAN  NAN
    2016-06-01    NAN   NAN   NAN   4    8
    2017-03-01     1     7     8   NAN  NAN
    2017-03-01    NAN   NAN    8    9    3
    2017-06-01    NAN    3    NAN  NAN   6 
    2017-06-01     8     3     4    7   NAN

индекс - это дата и время, и я хочу, чтобы он выглядел следующим образом:

                   a     b     c    d    e
    2016-06-01     3     6     5    4    8
    2017-03-01     1     7     8    9    3
    2017-06-01     8     3     4    7    6 

Я пытался кодироватьвот так:


for i in ABC.index.strftime('%Y-%m-%d'):
    for j in ABC:
        if ABC[i][j].isna().any() and ABC[i][j].notna().any()
           ABC[i][j].fillna(ABC[i][j][ABC[i][j].notna()][0],inplace = True)
print(ABC)

Я думал, что смогу создать такой фрейм данных:

                   a     b     c    d    e
    2016-06-01     3     6     5    4    8
    2016-06-01     3     6     5    4    8
    2016-06-01     3     6     5    4    8
    2017-03-01     1     7     8    9    3
    2017-03-01     1     7     8    9    3
    2017-06-01     8     3     4    7    6 
    2017-06-01     8     3     4    7    6

, и тогда я смогу просто использовать drop_duplicates для достижения своей цели, но мне это не удалось. (inplace = True), кажется, не работает, и то, что я распечатал, точно так же, как исходный кадр данных. Я не знаю, что не так, и понятия не имею, как это исправить. Может кто-нибудь сказать мне, как это исправить или лучший способ достичь моей цели? большое спасибо.

1 Ответ

2 голосов
/ 10 октября 2019

Если у вас есть кадр данных floats, просто сгруппируйте индекс и используйте first, который захватывает первое не-NA значение

df.groupby(level=0).first()

              a    b    c    d    e
2016-06-01  3.0  6.0  5.0  4.0  8.0
2017-03-01  1.0  7.0  8.0  9.0  3.0
2017-06-01  8.0  3.0  4.0  7.0  6.0

Просто обратите внимание, что NAN не считается NaN, поэтому могут быть столбцы с типом object dtype.

Чтобы исправить, просто pd.to_numeric или df.astype(float) - много SO потоков на этом.

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