Данный пример:
import pandas as pd
df = pd.DataFrame({
"date": ["20180724", "20180725", "20180731", "20180723", "20180731"],
"identity": [None, "A123456789", None, None, None],
"hid": [12345, 12345, 12345, 54321, 54321],
"hospital": ["A", "A", "A", "B", "B"],
"result": [70, None, 100, 90, 78]
})
Поскольку первые три строки имеют одинаковые hid
и hospital
, значения в identity
также должны быть идентичными. Что касается двух других строк, они также имеют одинаковые hid
и hospital
, но не было предоставлено никаких известных identity
, поэтому значения в identity
должны отсутствовать. Другими словами, желаемый результат:
date identity hid hospital result
0 20180724 A123456789 12345 A 70.0
1 20180725 A123456789 12345 A NaN
2 20180731 A123456789 12345 A 100.0
3 20180723 None 54321 B 90.0
4 20180731 None 54321 B 78.0
Я могу просмотреть все комбинации hid
s и hospital
s, например for hid, hospital in df[["hid", "hospital"]].drop_duplicates().itertuples(index=False)
, но я не знаю, что делать дальше.