Если вы загрузите только входную часть (красный квадрат в вашем вопросе) как df
, и если столбец 'Host name'
будет объединен, он будет выглядеть следующим образом (df
)
Host name IP address
LAX_R 192.168.1.1
NaN 192.168.1.2
NaN 192.168.1.3
Кстати, вы можете проверить, был ли изначально столбец 'Host name'
объединен, проверив, содержит ли он значение NaN
(Примечание: я предполагаю, что не должно быть значений NaN
, если он изначально не объединен) :
if sum(df['Host name'].isnull()) > 0:
А затем, путем прямого заполнения NaN,
df.ffill(inplace=True)
получаем
Host name IP address
LAX_R 192.168.1.1
LAX_R 192.168.1.2
LAX_R 192.168.1.3
После этого IP address
того же Host name
агрегируются в ту же ячейку, что и список
df = pd.DataFrame(df.groupby('Host name')['IP address'].apply(list))
На этом этапе df выглядит следующим образом
IP address
Host name
LAX_R [192.168.1.1, 192.168.1.2, 192.168.1.3]
Следующий шаг - удалить ненужные символы
df.columns = ['IP address']
for ch in ["[", "]", ",", "'"]:
df['IP address'] = df['IP address'].apply(lambda x: str(x).replace(ch, ""))
(Необязательно) Для «Apache Open Office» отображение каждого IP-адреса в новой строке выполняется с помощью
df['IP address'] = df['IP address'].apply(lambda x: x.replace(" ", "\n"))
Наконец сохраните его.
df.to_excel("yourfile.xlsx", index=True)
(Приложение)
Для «Microsoft Office» отображение каждого IP-адреса в новой строке выполняется с помощью
- Пропустить (необязательно) часть выше
- Выберите столбец «IP-адрес»
- Выберите Домой -> Обтекание текста следующим красным квадратом
Wrap Text">
Это немного долго, но это должно сделать задачу.
Надеюсь, это поможет.