У меня есть DF,
name Id
0 ABC i1
1 ABC i2
2 PQR i3
3 XYZ i1
4 XYZ i2
Я хочу найти name
с одинаковыми по крайней мере двумя Id
с. Я хочу построить график с взвешенными ребрами, и вес зависит от того, имеют ли два или более Id
с более чем одним именем.
Итак, в этом примере будут i1
и i2
, имеющие ABC
и XYZ
общие.
Я пытался добиться этого с помощью мультииндексирования int Pandas, где я создал новый DF, подобный следующему:
Id name
i1 ABC
ABC
i3 PQR
i2 XYZ
XYZ
С этого момента я полностью потерян. Спасибо!
Ожидаемый результат будет:
Id1 Id2 count
0 i1 i2 2
1 i3 Null Null
count
будет количество раз Id
s i1
и i2
с числом name
общий
EDITED DF
name Id
0 ABC i1
1 ABC i2
2 PQR i3
3 XYZ i1
4 QWE i2
########## Входной DF, используемый для экспериментов (dups_df
)
name Id
0 ABC i1
1 ABC i2
2 QWE i1
3 PQR i3
4 XYZ i2
РЕЗУЛЬТАТЫ Из этого DF dups_df['UniqueID'] = dups_df['Id'].map(node2id)
name Id UniqueId
0 ABC i1 1
1 ABC i2 1
2 QWE i1 1
3 PQR i3 2
4 XYZ i2 1
dups_df=dups_df.groupby('UniqueID').agg({'name':'nunique', 'Id':'unique'})
UniqueId Name Id
1 3 [i1,i2]
2 1 i3
df1 = pd.DataFrame(dups_df.pop('investors_uuids').tolist()).rename(columns= lambda x: "investors_uuids{}".format(x+1))
df1['count'] = dups_df['organization_name'].mask(dups_df['organization_name'].lt(2)).to_numpy()
**outputs**
Id1 Id2 count
0 i1 i2 3
1 i3 None NaN
Последний вывод DF неверен, счетчик с индексом 0 должен быть равен NaN или 1, поскольку в новом определенном DF abouve с именем dups_df
нет других name
общих значений, общих для i1
и i2
, за исключением ABC
, поэтому количество должно быть 1 или NAN, а не 3!
Моя проблема У меня есть столбцы идентификаторов и имен, я хочу построить сетевой график, где я соединяю два идентификатора с ребром и весом Край определяется, если два идентификатора (узла) имеют более одного имени.