#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 Кларк