[英]Replace particular value in all of the Pandas dataframe
使用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""}]"
如何從整個熊貓數據框中的字典列表字符串替換/更新所有單引號和類似字符串的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'}
我是熊貓的新手,有人可以幫我解決這個問題嗎?
提前致謝!
這是您的問題的解決方案。 首先看一下我定義的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的解決方案:
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
我還嘗試用無效的DF.replace()方法代替! 希望你得到想要的?
另一種替換所有列的方法更有效,如下所示:
for col in range(len(df1.columns)):
col_name = df1.iloc[:,col].name
df1[col_name] = df1[col_name].apply(lambda x: x.replace("'", '"').replace('u"', '"') if type(x) == str else x)
這將完全解決這個問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.