#python-3.x #pandas
#python-3.x #pandas
Вопрос:
Мне нужно было добавить одинарные кавычки вокруг каждого элемента для 2 разных столбцов в фрейме данных pandas. Один столбец имеет целочисленные значения, другой — строковые значения. Затем я хотел поместить элементы с одинарными кавычками вокруг них в новый столбец.
Я попробовал несколько предложений по stackoverflow, используя цикл for с методом savetxt от numpy. (Мне не нужно использовать numpy) Я попробовал регулярное выражение. Не удалось заставить его точно работать.
import pandas as pd
import numpy as np
data = {"id": [101, 102, 103, 104, 105],
"person": ['Ty', 'Al', 'Lou', 'Tao', 'Mick']}
df = pd.DataFrame(data)
id_in_quotes=[] #Wanted to put the new items with single quotes into an empty list and put into a new column
person_in_quotes=[] #Wanted to put the new items with single quotes into an empty list and put into a new column
for x in df: #DOES NOT WORK
np.savetxt('text.txt',x, fmt='%r') #DOES NOT WORK
x.append(id_in_quotes)#DOES NOT WORK
В итоге хотелось увидеть 4 столбца: id, person, id_with_quotes, person_with_quotes. Идентификаторы столбцов и person остаются неизменными. Столбцы id_with_quotes, person_with_quotes — это id и person, причем каждый элемент заключен в одинарные кавычки.
Комментарии:
1. Итак, вы хотите, чтобы вывод был «101» для id и «Ty» для person?
Ответ №1:
Вы могли бы достичь этого, используя DataFrame.applymap
и DataFrame.merge
вот так:
df_new = (df.merge(
df.astype(str).applymap(lambda x: "'" x "'"),
left_index=True, right_index=True,
suffixes=('', '_with_quotes')))
print(df_new)
id person id_with_quotes person_with_quotes
0 101 Ty '101' 'Ty'
1 102 Al '102' 'Al'
2 103 Lou '103' 'Lou'
3 104 Tao '104' 'Tao'
4 105 Mick '105' 'Mick'
Ответ №2:
Вы могли бы сделать что-то подобное, если я правильно прочитал ваш вопрос. В основном просматривая каждый столбец и добавляя кавычки к началу и концу каждого элемента в столбце. Преобразуйте в str
оба случая на всякий случай.
import pandas as pd
data = {"id": [101, 102, 103, 104, 105],
"person": ['Ty', 'Al', 'Lou', 'Tao', 'Mick']}
df = pd.DataFrame(data)
df['id_w_quotes'] = df['id'].apply(lambda x: "'" str(x) "'")
df['person_w_quotes'] = df['person'].apply(lambda x: "'" str(x) "'")
df.head()
Что дает этот результат
id person id_w_quotes person_w_quotes
0 101 Ty '101' 'Ty'
1 102 Al '102' 'Al'
2 103 Lou '103' 'Lou'
3 104 Tao '104' 'Tao'
4 105 Mick '105' 'Mick'
Комментарии:
1. Интересно, можно ли добавить префикс / суффикс одинарной кавычки на месте, без добавления нового столбца?