使用 python 从数据框中提取嵌套值
Extract nested values from data frame using python
我已经从 API 响应中提取数据并创建了一个字典函数:
def data_from_api(a):
dictionary = dict(
data = a['number']
,created_by = a['opened_by']
,assigned_to = a['assigned']
,closed_by = a['closed']
)
return dictionary
然后到 df(大约 1k 条记录):
raw_data = []
for k in data['resultsData']:
records = data_from_api(k)
raw_data.append(records)
我想创建一个函数来提取数据框中列中的嵌套字段 {display_value}。我只需要John Snow等名字,请看下面:
如何创建一个函数来提取那些字段的显示值?我试图创建类似的东西:
df = pd.DataFrame.from_records(raw_data)
def get_nested_fields(nested):
if isinstance(nested, dict):
return nested['display_value']
else:
return ''
df['created_by'] = df['opened_by'].apply(get_nested_fields)
df['assigned_to'] = df['assigned'].apply(get_nested_fields)
df['closed_by'] = df['closed'].apply(get_nested_fields)
但我收到一个错误:
KeyError: 'created_by'
你能帮帮我吗?
您可以像下面那样使用 .str
和 get()
。如果密钥不存在,它将写入 None.
df = pd.DataFrame({'data':[1234, 5678, 5656], 'created_by':[{'display_value':'John Snow', 'link':'a.com'}, {'display_value':'John Dow'}, {'my_value':'Jane Doe'}]})
df['author'] = df['created_by'].str.get('display_value')
输出
data created_by author
0 1234 {'display_value': 'John Snow', 'link': 'a.com'} John Snow
1 5678 {'display_value': 'John Dow'} John Dow
2 5656 {'my_value': 'Jane Doe'} None
我已经从 API 响应中提取数据并创建了一个字典函数:
def data_from_api(a):
dictionary = dict(
data = a['number']
,created_by = a['opened_by']
,assigned_to = a['assigned']
,closed_by = a['closed']
)
return dictionary
然后到 df(大约 1k 条记录):
raw_data = []
for k in data['resultsData']:
records = data_from_api(k)
raw_data.append(records)
我想创建一个函数来提取数据框中列中的嵌套字段 {display_value}。我只需要John Snow等名字,请看下面:
如何创建一个函数来提取那些字段的显示值?我试图创建类似的东西:
df = pd.DataFrame.from_records(raw_data)
def get_nested_fields(nested):
if isinstance(nested, dict):
return nested['display_value']
else:
return ''
df['created_by'] = df['opened_by'].apply(get_nested_fields)
df['assigned_to'] = df['assigned'].apply(get_nested_fields)
df['closed_by'] = df['closed'].apply(get_nested_fields)
但我收到一个错误:
KeyError: 'created_by'
你能帮帮我吗?
您可以像下面那样使用 .str
和 get()
。如果密钥不存在,它将写入 None.
df = pd.DataFrame({'data':[1234, 5678, 5656], 'created_by':[{'display_value':'John Snow', 'link':'a.com'}, {'display_value':'John Dow'}, {'my_value':'Jane Doe'}]})
df['author'] = df['created_by'].str.get('display_value')
输出
data created_by author
0 1234 {'display_value': 'John Snow', 'link': 'a.com'} John Snow
1 5678 {'display_value': 'John Dow'} John Dow
2 5656 {'my_value': 'Jane Doe'} None