替换所有熊猫数据框中的特定值

时间:2019-07-27 10:05:57

标签: python string pandas dataframe replace

在使用Pandas Dataframe(DF)时,我陷入了一个棘手的问题(我觉得是这样)。

我有10-15多个DF列,其中包含字典值列表字符串。例如这样的

"[{u'firstLogin': u'2018-08-30 08:19:29 +0000', u'clientId': u'abcd12345wtregse', u'lastLogin': u'2018-08-30 08:19:29 +0000'}]"

我正在尝试这样做:

df = df.replace({"'":'""', 'u"':'"'})

我期望上面的代码行是,它将替换DF中存在的所有单引号,并且还将 u” 替换为,但是似乎不适用于此行。

预期输出:

"[{""firstLogin"": ""2018-08-30 08:19:29 +0000"", ""clientId"": ""abcd12345wtregse"", ""lastLogin"": ""2018-08-30 08:19:29 +0000""}]"

如何在整个Pandas数据框中,从字典列表的字符串中替换/更新所有单引号和类似 u“ 的字符串?

样本输入:

column 1                                                                                                                        | column 2                                                                                                                           | column 3 
"[{u'firstLogin': u'2018-08-30 08:19:29 +0000', u'clientId': u'abcd12345wtregse', u'lastLogin': u'2018-08-30 08:19:29 +0000'}]" | "[{u'accepted': True, u'type': u'privacy_policy', u'id': 5872014}, {u'accepted': True, u'type': u'terms_of_use', u'id': 5872015}]" | "{u'type': u'password', u'value': u'2asdgdfjnasdgadfgd'}

我是熊猫的新手,有人可以帮我解决这个问题吗?

预先感谢!

1 个答案:

答案 0 :(得分:0)

这是您的问题的解决方案。首先看一下我定义的DF:

data:image/*;charset=utf-8;base64,/9j/4AAQSkZJRg

这是此DF的解决方案:

df1=pandas.DataFrame([{"col":"[{u'firstLogin': u'2018-08-30 08:19:29 +0000', u'clientId': u'abcd12345wtregse', u'lastLogin': u'2018-08-30 08:19:29 +0000'}]", "col2":"[{u'firstLogin': u'2018-08-30 08:19:29 +0000', u'clientId': u'abcd12345wtregse', u'lastLogin': u'2018-08-30 08:19:29 +0000'}]"}])

我还尝试用无效的DF.replace()方法替换! 希望你得到想要的东西?

另一种替换所有列的方法如下:

for col in  range(len(df1.columns)):
    col_name = df1.iloc[:,col].name
    temp=[]
    for rw in range(len(df1.index)):
        row_data = df1.iloc[rw,col].replace("'", '"')
        row_data = row_data.replace('u"', '"')        
        print(row_data)
        temp.append(row_data)
    df1[col_name]=temp

这将完全解决这个问题。