заполнение в соответствии с другим столбцом - PullRequest
0 голосов
/ 20 октября 2019
df=pd.DataFrame({"Date":[date(2019,10,1),date(2019,10,2),date(2019,10,1),date(2019,10,2),date(2019,10,1),date(2019,10,2),date(2019,10,1),date(2019,10,2)],
                "CatID":[1,1,1,None,2,2,2,2],
                 "ShopID":[1,1,1,1,2,2,2,2]
                })

df.CatID=df['CatID'].bfill()
df

Для значения None в CatID я хочу, чтобы оно было заполнено в соответствии с ShopID. значение None заполнено на 2, что не то, что я хочу (так как значение CatID от ShopID=2), оно должно остаться как None, что мне делать?

1 Ответ

0 голосов
/ 20 октября 2019

Я не уверен, чего именно вы хотите достичь:

import pandas as pd
from datetime import date


df=pd.DataFrame({"Date":[date(2019,10,1),date(2019,10,2),date(2019,10,1),date(2019,10,2),date(2019,10,1),date(2019,10,2),date(2019,10,1),date(2019,10,2)],
                "CatID":[1,1,1,None,2,2,2,2],
                 "ShopID":[1,1,1,1,2,2,2,2]
                })

df['CatID_copy'] = df['CatID']
df['CatID'] = df['CatID'].bfill()
df.loc[df['CatID_copy'].isna(), 'CatID'] = df['CatID_copy'] 
df.drop(columns='CatID_copy', inplace=True)

Вывод:

   Date         CatID  ShopID
0  2019-10-01    1.0       1
1  2019-10-02    1.0       1
2  2019-10-01    1.0       1
3  2019-10-02    NaN       1
4  2019-10-01    2.0       2
5  2019-10-02    2.0       2
6  2019-10-01    2.0       2
7  2019-10-02    2.0       2

Если что-то другое, пожалуйста, приложите ожидаемый вывод.

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