подумайте о df, например:

df = pd.DataFrame({'Fist_Name':  ['Джон', 'Джек', 'Джимми'],
                           'Last_Name': ['Блэк', 'Смит', 'Ли'],
                           'Город': ['Нью-Йорк', 'Лос-Анджелес', 'Бостон'],
                           'Страна': ['USA','USA','USA']})

Я хочу создать новый столбец, который содержит имя столбца и значения всех строк перед ним.

например, первая строка нового столбца будет выглядеть так:

'Fist_Name: John, Last_Name: Black, City: Нью-Йорк, Страна: США'

cpx

Ответов: 3

Ответы (3)

Один из способов сделать это - объединить столбцы с помощью join.

import pandas as pd
df = pd.DataFrame({'Fist_Name':  ['Джон', 'Джек', 'Джимми'],
                           'Last_Name': ['Блэк', 'Смит', 'Ли'],
                           'Город': ['Нью-Йорк', 'Лос-Анджелес', 'Бостон'],
                           'Страна': ['USA','USA','USA']})

print (df)
def address(x):
   return ', '.join([col + ': ' + x[col] for col in df.columns])

df['new'] = df.apply(address, axis = 1)

print (df['new'])

Вывод будет следующим:

 Имя_Фамилия Фамилия_Город Страна
0 Джон Блэк Нью-Йорк США
1 Джек Смит Лос-Анджелес США
2 Джимми Ли Бостон США

0 Имя_кулака: Джон, Фамилия_Имя: Блэк, Город: Нью-Йорк, Страна: США
1 Имя_кулака: Джек, Фамилия_Имя: Смит, Город: Лос-Анджелес, Страна: США
2 Кулак_Имя: Джимми, Фамилия_Имя: Ли, Город: Бостон, Страна: США

Вы можете использовать понимание списка для манипулирования выводом из pandas.DataFrame.to_dict путем преобразования записей в str:

df['new'] = [str(row).replace("'","")[1:-1] for row in df.to_dict('r')]

print(df['new'][0])
#'Fist_Name: Джон, Фамилия_Имя: Блэк, Город: Нью-Йорк, Страна: США

С помощью str.replace можно удалить одинарные кавычки ("'"), затем с помощью среза можно удалить скобки ('{' и '}').

Я рекомендую сохранить тип dict

df['new'] = df.to_dict('r')
df
  Fist_Name ... new
0 Джон ...  {'Fist_Name': 'John', 'Last_Name': 'Black', 'C ...
1 Джек ...  {'Fist_Name': 'Jack', 'Last_Name': 'Smith', 'C...
2 Джимми ...  {'Fist_Name': 'Jimmy', 'Last_Name': 'Lee', 'Ci...
[3 строки x 5 столбцов]

2022 WebDevInsider