Добавьте одинарные кавычки вокруг элементов в столбцах string и integer в фрейме данных Python Pandas

#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. Интересно, можно ли добавить префикс / суффикс одинарной кавычки на месте, без добавления нового столбца?