在使用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'}
我是熊猫的新手,有人可以帮我解决这个问题吗?
预先感谢!
答案 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
这将完全解决这个问题。