У меня есть пример набора данных:
import pandas as pd
d = {
'ID': ['ID-1','ID-1','ID-1','ID-1','ID-2','ID-2','ID-2'],
'OBR':[100,100,100,100,200,200,200],
'OBX':['A','B','C','D','A','B','C'],
'notes':['hello','hello2','','','bye','',''],
}
df = pd.DataFrame(d)
это выглядит так:
ID OBR OBX notes
ID-1 100 A hello
ID-1 100 B hello2
ID-1 100 C
ID-1 100 D
ID-2 200 A bye
ID-2 200 B
ID-2 200 C
Я хочу пройтись по каждой строке, и для каждого идентификатора, комбинации OBR, назначитьномер OBX и примечания, которые увеличивают на 1, и присваивают значения соответственно.
Таким образом, для первого идентификатора, комбинация OBR : идентификатор и имя OBR остаются неизменными, поскольку существует 4 различных значения OBX, имена для OBX будут OBX1, OBX2, OBX3и OBX4, и так как есть 2 различных значения примечаний, имена для примечаний будут note1 и note2.
второй идентификатор, комбинация OBR : идентификатор и имя OBR остаются неизменными, поскольку существует 3 различных значения OBX, имена для OBX будут OBX1, OBX2 и OBX3, ипоскольку существует 1 значение примечания, имя для примечаний будет note1.
Желаемый вывод: напечатать и присвоить значения
ID = ID-1
OBR= 100
OBX1=A
OBX2=B
OBX3=C
OBX4=D
note1 = hello
note2 = hello2
ID = ID-2
OBR= 200
OBX1 = A
OBX2 = B
OBX3 = C
note1 = bye
моя попытка:
count = 0
grouped = df.groupby(['ID','OBR'])
for a, group in grouped:
ID = a[0]
OBR = a[1]
OBX+str(count) = group['OBX'] #this gives an error, can't use OBX+str(count) as the name
note+str(count) = group['notes'] #this gives an error as well
count +=1 #Is using count correct?
print(....)