将单引号替换为双引号python pandas dataframe

时间:2018-10-29 09:33:02

标签: python pandas

我想将单引号(')替换为双引号(“),以使其在python数据框中具有正确的json列值。

例如csv文件看起来像...

Unit Id Batch Id                               Items prod
A108    qa120  {'A': 123, 'B': 342, 'C': 454}   
P258    re015  {'A': 124, 'B': 234, 'C': 343} 

我正在将这些值从csv读取到pandas数据框。我尝试了几种方法,但是没有运气。

df.replace("'",'"',inplace=True)
df.['<column_name>'].str.replace(r"[\',]",'"')
df = df['<column_name>'].str.replace(r"[\',]",'"')

谢谢您的帮助。

4 个答案:

答案 0 :(得分:1)

使用str.replace

如果要更新DataFrame上的列,例如

Example of DataFram

假设您要删除第一列中的双引号。

只需执行以下操作

df[0] = df[0].str.replace(r"[\"]", r"'")

这是最终结果

Output after running the code above

答案 1 :(得分:0)

您可以将值转换为字典,例如:

import ast

df['<column_name>'] = df['<column_name>'].apply(ast.literal_eval)

但是,如果输入数据是json文件(字符串),则最好使用 json_normalize

答案 2 :(得分:0)

如果问题是将单引号转换为双引号而没有,那么在将其读入数据帧后就没有这样做的限制了-您可以在之前的.csv文件之前更改< / em>您将其读入数据框:

$ sed -i "s/'/\"/g" file_name.csv

如果必须将它们替换为 ,然后将它们读入数据框,请尝试使用this post中提到的解决方案:

df.replace({'\'': '"'}, regex=True)

答案 3 :(得分:0)

看起来像您需要的。

import pandas as pd
import json
import ast


df = pd.DataFrame({"Unit Id": ["A108", "P258"], "Batch Id": ["qa120", "re015"], "Items prod": ["{'A': 123, 'B': 342, 'C': 454}", "{'A': 124, 'B': 234, 'C': 343}"]})
df["NEW"] = df["Items prod"].apply(ast.literal_eval).apply(json.dumps)
print(df)

输出:

  Batch Id                      Items prod Unit Id  \
0    qa120  {'A': 123, 'B': 342, 'C': 454}    A108   
1    re015  {'A': 124, 'B': 234, 'C': 343}    P258   

                              NEW  
0  {"A": 123, "C": 454, "B": 342}  
1  {"A": 124, "C": 343, "B": 234}