我想将单引号(')替换为双引号(“),以使其在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"[\',]",'"')
谢谢您的帮助。
答案 0 :(得分:1)
使用str.replace
。
如果要更新DataFrame上的列,例如
假设您要删除第一列中的双引号。
只需执行以下操作
df[0] = df[0].str.replace(r"[\"]", r"'")
这是最终结果
答案 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}