我一直在嘗試這個方法很長時間,似乎無法找到一種從字串中提取瀏覽器的簡潔方法。它是 df 中的一列,因此它需要遍歷所有行
該列看起來像這樣
0 [{'name': 'Chrome', 'version': '36.0.1985.143'}]
1 [{'name': 'Chrome', 'version': '34.0.1847.137'}]
2 [{'name': 'Chrome', 'version': '29.0.1547.76'}]
3 [{'name': 'Chrome', 'version': '33.0.1750.154'}]
4 [{'name': 'Chrome', 'version': '36.0.1985.143'}]
該列稱為瀏覽器。
我嘗試了以下方法。
df_agent_info['browser'].str.split("\[\{\'[a\-z]\'")
和其他更糟糕的例子。我很感激幫助。
uj5u.com熱心網友回復:
import re
pattern = r"(?<='name': ')[\w ] "
def match(x):
if re.findall(pattern, x):
return re.findall(pattern, x)[0]
df['browser'].apply(match)
(?<='name': ')是一個積極的前瞻:在這種情況下,它會查找隨后的匹配項'name': '
uj5u.com熱心網友回復:
鑒于:
browser
0 [{'name': 'Chrome', 'version': '36.0.1985.143'}]
1 [{'name': 'Chrome', 'version': '34.0.1847.137'}]
2 [{'name': 'Chrome', 'version': '29.0.1547.76'}]
3 [{'name': 'Chrome', 'version': '33.0.1750.154'}]
4 [{'name': 'Chrome', 'version': '36.0.1985.143'}]
讓我們將它們評估為 python:
df.browser = df.browser.apply(eval)
現在我們可以很容易地提取它:
df.browser = df.browser.str[0].str.get('name')
print(df)
輸出:
browser
0 Chrome
1 Chrome
2 Chrome
3 Chrome
4 Chrome
uj5u.com熱心網友回復:
首先使用內置的將字串轉換為包含字典的串列ast.literal_eval(它比使用更安全eval),然后使用list_dict[0]['name']. 使用 將此邏輯應用于browser列的每個字串值Series.apply。
放在一起:
import pandas as pd
import ast
df_agent_info = pd.DataFrame({
'browser': ["[{'name': 'Chrome', 'version': '36.0.1985.143'}]",
"[{'name': 'Chrome', 'version': '34.0.1847.137'}]",
"[{'name': 'Chrome', 'version': '29.0.1547.76'}]",
"[{'name': 'Chrome', 'version': '33.0.1750.154'}]",
"[{'name': 'Chrome', 'version': '36.0.1985.143'}]"]
})
df_agent_info['browser'] = df_agent_info['browser'].apply(lambda s: ast.literal_eval(s)[0]['name'])
輸出:
>>> df_agent_info['browser']
0 Chrome
1 Chrome
2 Chrome
3 Chrome
4 Chrome
Name: browser, dtype: object
uj5u.com熱心網友回復:
這是另一種方法,One liner
使用正則運算式組匹配內容 b/w 星號,通過使用正則運算式組
df['browser'].str.extract(r'(:\s).?([\w\s]*)')[1].str.strip()
0 Internet Explore
1 Chrome
2 Chrome
3 Chrome
4 Chrome
Name: 1, dtype: object
df = pd.DataFrame({
'browser': ["[{'name': 'Internet Explore', 'version': '36.0.1985.143'}]",
"[{'name': 'Chrome', 'version': '34.0.1847.137'}]",
"[{'name': 'Chrome', 'version': '29.0.1547.76'}]",
"[{'name': 'Chrome', 'version': '33.0.1750.154'}]",
"[{'name': 'Chrome', 'version': '36.0.1985.143'}]"]
})

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/491551.html
