Попробуй это.Сгруппируйте все столбцы, в которых вы ожидали, что информация будет дублироваться, а затем объедините различные значения «dest_port» в список:
df = pd.DataFrame([
["Firewall-1","outside","tcp","4.4.4.4",53,"1.1.1.1",1025,"outbound","allowed","",2],
["Firewall-1","outside","tcp","4.4.4.4",53,"1.1.1.1",1026,"outbound","allowed","",2],
["Firewall-1","outside","tcp","4.4.4.4",22,"1.1.1.1",1028,"outbound","allowed","",2],
["Firewall-1","outside","tcp","3.3.3.3",22,"2.2.2.2",2200,"outbound", "allowed","",2]
],
columns=["dvc","src_interface","transport","src_ip","src_port","dest_ip","dest_port","direction", "action", "cause", "count"])
index_cols = df.columns.tolist()
index_cols.remove("dest_port")
df = df.groupby(index_cols)["dest_port"].apply(list)
df = df.reset_index()
это приведет к 3 оставшимся строкам, а не к 2, как в желаемом выводе:
dvc src_interface transport src_ip src_port dest_ip direction action cause count dest_port
0 Firewall-1 outside tcp 3.3.3.3 22 2.2.2.2 outbound allowed 2 [2200]
1 Firewall-1 outside tcp 4.4.4.4 22 1.1.1.1 outbound allowed 2 [1028]
2 Firewall-1 outside tcp 4.4.4.4 53 1.1.1.1 outbound allowed 2 [1025, 1026]