在 Pandas 列中拆分多个词典
Splitting multiple Dictionaries within a Pandas Column
我正在尝试用 pandas 列中的列表拆分字典,但它对我不起作用...
调用时该列看起来像这样;
df.topics[3]
输出
"[{'urlkey': 'webdesign', 'name': 'Web Design', 'id': 659}, {'urlkey': 'productdesign', 'name': 'Product Design', 'id': 2993}, {'urlkey': 'internetpro', 'name': 'Internet Professionals', 'id': 10102}, {'urlkey': 'web', 'name': 'Web Technology', 'id': 10209}, {'urlkey': 'software-product-management', 'name': 'Software Product Management', 'id': 42278}, {'urlkey': 'new-product-development-software-tech', 'name': 'New Product Development: Software & Tech', 'id': 62946}, {'urlkey': 'product-management', 'name': 'Product Management', 'id': 93740}, {'urlkey': 'internet-startups', 'name': 'Internet Startups', 'id': 128595}]"
我只想将 'name' 和 'id' 放入 topic_1、topic_2 等单独的列中。
感谢任何帮助。
你可以试试这个。
import json
df.topics.apply(lambda x : {x['id']:x['name'] for x in json.loads(x.replace("'",'"'))} )
您给出的行的输出是:
{659: 'Web Design',
2993: 'Product Design',
10102: 'Internet Professionals',
10209: 'Web Technology',
42278: 'Software Product Management',
62946: 'New Product Development: Software & Tech',
93740: 'Product Management',
128595: 'Internet Startups'}
你应该尝试一个简单的方法
dt = df.topic[3]
li = []
for x in range(len(dt)):
t = {dt[x]['id']:dt[x]['name']}
li.append(t)
print(li)
输出是-
[{659: 'Web Design'},
{2993: 'Product Design'},
{10102: 'Internet Professionals'},
{10209: 'Web Technology'},
{42278: 'Software Product Management'},
{62946: 'New Product Development: Software & Tech'},
{93740: 'Product Management'},
{128595: 'Internet Startups'}]
首先取df.topic[3]在dt
中的值,在列表中以列表和字典的形式存在,然后取一个临时列表 li[]
,我们在其中 添加(追加) 我们的值,现在我们 运行 循环 [= 值的长度35=](我们将其作为 dt),现在在 t
中,我们通过 dt[0]['id']
或 dt[0]['name']
添加 id 或名称,即 '659:'Web Design'
作为 x增加所有值都来自 t,然后 { : }
我们正在转换 Dictionary 中的值并将其附加到临时列表 li
我正在尝试用 pandas 列中的列表拆分字典,但它对我不起作用...
调用时该列看起来像这样;
df.topics[3]
输出
"[{'urlkey': 'webdesign', 'name': 'Web Design', 'id': 659}, {'urlkey': 'productdesign', 'name': 'Product Design', 'id': 2993}, {'urlkey': 'internetpro', 'name': 'Internet Professionals', 'id': 10102}, {'urlkey': 'web', 'name': 'Web Technology', 'id': 10209}, {'urlkey': 'software-product-management', 'name': 'Software Product Management', 'id': 42278}, {'urlkey': 'new-product-development-software-tech', 'name': 'New Product Development: Software & Tech', 'id': 62946}, {'urlkey': 'product-management', 'name': 'Product Management', 'id': 93740}, {'urlkey': 'internet-startups', 'name': 'Internet Startups', 'id': 128595}]"
我只想将 'name' 和 'id' 放入 topic_1、topic_2 等单独的列中。
感谢任何帮助。
你可以试试这个。
import json
df.topics.apply(lambda x : {x['id']:x['name'] for x in json.loads(x.replace("'",'"'))} )
您给出的行的输出是:
{659: 'Web Design',
2993: 'Product Design',
10102: 'Internet Professionals',
10209: 'Web Technology',
42278: 'Software Product Management',
62946: 'New Product Development: Software & Tech',
93740: 'Product Management',
128595: 'Internet Startups'}
你应该尝试一个简单的方法
dt = df.topic[3]
li = []
for x in range(len(dt)):
t = {dt[x]['id']:dt[x]['name']}
li.append(t)
print(li)
输出是-
[{659: 'Web Design'},
{2993: 'Product Design'},
{10102: 'Internet Professionals'},
{10209: 'Web Technology'},
{42278: 'Software Product Management'},
{62946: 'New Product Development: Software & Tech'},
{93740: 'Product Management'},
{128595: 'Internet Startups'}]
首先取df.topic[3]在dt
中的值,在列表中以列表和字典的形式存在,然后取一个临时列表 li[]
,我们在其中 添加(追加) 我们的值,现在我们 运行 循环 [= 值的长度35=](我们将其作为 dt),现在在 t
中,我们通过 dt[0]['id']
或 dt[0]['name']
添加 id 或名称,即 '659:'Web Design'
作为 x增加所有值都来自 t,然后 { : }
我们正在转换 Dictionary 中的值并将其附加到临时列表 li