【问题标题】:replace single quote to double quote python pandas dataframe将单引号替换为双引号 python pandas 数据框
【发布时间】:2019-04-02 04:57:26
【问题描述】:

我想将单引号(') 替换为双引号(") 以使其在 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"[\',]",'"')

提前感谢您的帮助。

【问题讨论】:

  • 输入数据是json?如果是,是否可以创建数据样本?
  • 是的,输入数据是 json。这是示例数据,我也在我原来的问题中添加了这个。 Unit Id Batch Id Items prod A108 qa120 {'A': 123, 'B': 342, 'C': 454} P258 re015 {'A': 124, 'B': 234, 'C': 343}跨度>
  • @RuchitaP - 但我认为是 json 文件,而不是 json 数据框。

标签: python pandas string dataframe replace


【解决方案1】:

如果问题是将单引号转换为双引号没有在您将其读入数据框后限制这样做 - 您可以更改 .csv 文件之前 你将它读入数据框:

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

如果您必须在将它们读入数据帧后替换它们,请尝试this post 中提到的解决方案:

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

【讨论】:

  • 非常感谢,这按预期工作。唯一的微小变化是,需要将其分配回 df。例如df = df.replace({'\'': '"'}, 正则表达式=True)
  • 如果数据框是相同的,那么我们可以在原地添加另一个选项为 True 以避免一行代码.... df = df.replace({'\'': '"'} , 正则表达式=True, inplace=True)
【解决方案2】:

使用str.replace

如果你想更新 DataFrame 上的列,比如这个

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

只需执行以下操作

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

这是最终结果

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

      【解决方案4】:

      看起来你需要。

      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}  
      

      【讨论】:

        猜你喜欢
        • 2018-11-18
        • 1970-01-01
        • 2017-12-29
        • 1970-01-01
        • 1970-01-01
        • 2020-10-30
        • 1970-01-01
        • 1970-01-01
        • 2021-08-12
        相关资源
        最近更新 更多