У меня есть кадр данных, который выглядит следующим образом:
Col1 Col2
row1 A1 A2
row2 A2 A3
row3 A2 A4
row4 A3 A5
row5 B1 B2
row6 B2 A3
Мне нужно определить значения Col1, которые никогда не появятся в качестве значения Col2 (мы будем называть эти MasterValues), и сгенерировать список илистрока с разделителями-запятыми всех значений, связанных с MasterValue.В этом примере A1 и B1 будут MasterValues.
Ожидаемый результат:
Col1 Col2
row1 A1 A2,A3,A4,A5
row2 B1 B2,A3
Обратите внимание, что существуют тысячи строк, и некоторые значения (например, A3 в этом примере) используются дляболее одного MasterValue.Также важно отметить, что многие значения встречаются более одного раза в Col1 (например, A2 в этом примере), включая некоторые MasterValues.
Первый шаг, который я рассчитывал, состоит в группировке DF по Col1.Затем я решил зациклить и добавить Col2 соответствующим образом.Я перепробовал много вариантов, и это самое близкое, что я получил:
DF = pandas.read_sql(command, connection)
DF2 = DF
DF = DF.groupby('col1', as_index=False).agg({col2: lambda x: ','.join(x)}))
for xrow in DF.itertuples():
for yrow in DF2.itertuples():
if yrow[1] in xrow[2]:
DF.at[xrow[0], 'col2'] = DF.at[xrow[0], 'col2'] + ',' + yrow[2]
Однако это все еще не правильно.Я все еще получаю некоторые значения в Col1, которые не являются MasterValues.Я искал и искал, думал и думал, но безрезультатно.Может ли кто-нибудь помочь мне обернуть голову вокруг логики, необходимой для этого?