簡體   English   中英

替換所有熊貓數據框中的特定值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM