Объединение значений двух столбцов фрейма данных

#python #pandas #dataframe

#python #панды #фрейм данных

Вопрос:

У меня есть фрейм данных, как показано ниже:

      Name  Age
0    Alex   10
1     Bob   12
2  Clarke   13
  

Фрейм данных создается как:

 data = [['Alex',10],['Bob',12],['Clarke',13]]
df = pd.DataFrame(data,columns=['Name','Age'])
  

Я хочу выполнить конкатенацию строк из двух столбцов как:

      Name      Age
0    10 Alex   10 
1    12 Bob    12 
2    13 Clarke 13 
  

Я попытался использовать df["Name"] = df["Age"] " " df["Name"] , что привело к приведенной ниже ошибке:

Обратная трассировка (последний последний вызов): файл «», строка 1, в файле «/anaconda3/envs/env1/lib/python3.6/site-packages/pandas/core/ops/common.py «, строка 65, в методе возврата new_method(self, other) Файл «/anaconda3/envs/env1/lib/python3.6/site-packages/pandas/core/ops/init.py «, строка 343, в файле-оболочке result = arithmetic_op(lvalues, rvalues, op) «/anaconda3/envs/env1/lib/python3.6/site-packages/pandas/core/ops/array_ops.py «, строка 189, в файле arithmetic_op res_values = na_arithmetic_op(lvalues, rvalues, op) «/anaconda3/envs/env1/lib/python3.6/site-packages/pandas/core/ops/array_ops.py «, строка 149, в na_arithmetic_op результат = masked_arith_op(слева, справа, op) Файл «/anaconda3/envs/env1/lib/python3.6/site-packages/pandas/core/ops/array_ops.py «, строка 111, в masked_arith_op результат[маска] = op(xrav[маска], y) numpy.core._exceptions.Ошибка UFuncTypeError: UFuncTypeError ‘add’ не содержит цикла с типами соответствия сигнатур (dtype(‘<21’), dtype(‘<21’)) -> dtype(‘

Ответ №1:

Поскольку Age это int столбец, вам нужно привести его к str использованию astype

 In [2511]: df['Name'] = df["Age"].astype(str)   " "   df["Name"]

In [2511]: df['Name']
Out[2511]: 
0      10 Alex
1       12 Bob
2    13 Clarke
  

Ответ №2:

Series.str.cat

 df['Name'] = df['Age'].astype(str).str.cat(df['Name'], sep=' ')

        Name  Age
0    10 Alex   10
1     12 Bob   12
2  13 Clarke   13
  

Ответ №3:

Вот возможное решение:

 df['Name'] = df['Age'].map(str)   ' '   df['Name']
  

Ответ №4:

Вы можете использовать:

df['Name']=df['Age'].apply(lambda x :str(x)) ' ' df['Name']

Ответ №5:

Мы можем использовать функцию apply для преобразования столбца dataframe «age» в строку из int, а затем объединить его со столбцом «name», используя оператор » «.

df[«имя»] = df[«возраст»].применить (str) » » df[«имя»]

df[«имя»]

Вывод будет выглядеть примерно так

0 10 Алекс
1 12 Боб
2 13 Кларк