在Python Pandas Dataframe中的字符串和整数列中的项目周围添加单引号

时间:2019-04-09 14:59:26

标签: python-3.x pandas

我需要在熊猫数据框中的2个不同列的每个项目周围添加单引号。一列具有整数值,另一列具有字符串值。然后,我想将带有单引号的项目放在新列中。

我使用numpy的savetxt方法使用for循环尝试了关于stackoverflow的多个建议。 (我不需要使用numpy)我尝试过Regex。无法使其完全正常工作。

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。列ID和人员保持不变。 id_with_quotes,person_with_quotes列是id和person,每个项目都用单引号引起来。

2 个答案:

答案 0 :(得分:2)

您可以使用DataFrame.applymapDataFrame.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'

答案 1 :(得分:1)

如果我没看错你的问题,你可以做这样的事情。基本上遍历每一列,并在该列中每个项目的开头和结尾添加引号。为了安全起见,将两种情况都转换为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'