如何在python Pandas中将列插入嵌套对象中



我正在处理一个数据集,我有这个数据帧,它只是数据集的一部分:

def make_decision(x):
decisions=pd.DataFrame(([{
"requests":" ",
"name":fake.name(),
# ****** NEED TO INSERT "IDS" HERE ****
"decision":[{
"ID":random.randint(0,400000),
# ....
}],
} for i in range(x)
]))
return decisions
decisions_data=make_decisions(100)

我需要对多个位置使用相同的ID。为此,我创建了另一个数据帧:

def make_id(x):
ids=pd.DataFrame(([{
"id":random.randint(10000,1000000)
} for i in range(x)]))  
return ids
ids_data=make_id(100)

make_decisions中,我尝试了:

#decisions.decision
decisions["decision"].insert(loc=0,
column="ID",
value=ids.data)

这不起作用。有没有什么简单的方法可以在panda中的嵌套数据中插入一列?一个解决方法是创建另一个数据帧decision,在此处插入ID,然后将decision插入到decisions中,如果我有一个深度嵌套的数据集,这是不好的。

因此,给定以下玩具数据帧:

print(decisions_data)
# Output
requests name                 decision
0                  [{'fake_data': 89649}]
1                 [{'fake_data': 174821}]
2                 [{'fake_data': 174710}]
3                 [{'fake_data': 199579}]
4                 [{'fake_data': 145920}]
..      ...  ...                      ...
95                [{'fake_data': 284447}]
96                [{'fake_data': 136447}]
97                [{'fake_data': 308367}]
98                [{'fake_data': 224229}]
99                [{'fake_data': 311495}]
print(ids_data)
# Output
id
0   392027
1   994190
2   288195
3   477688
4   123423
..     ...
95  540292
96  958907
97  856280
98  892172
99  723018

你可以试试这个(Python 3.9+(:

decisions_data["decision"] = [
{"ID": ids_data["id"][i]} | nested_list[0]
for i, nested_list in enumerate(decisions_data["decision"])
]
print(decisions_data)
# Output
requests name                             decision
0                 {'ID': 559006, 'fake_data': 328753}
1                 {'ID': 381363, 'fake_data': 227269}
2                  {'ID': 627905, 'fake_data': 84975}
3                 {'ID': 951569, 'fake_data': 101472}
4                 {'ID': 329484, 'fake_data': 341664}
..      ...  ...                                  ...
95                {'ID': 511912, 'fake_data': 384229}
96                {'ID': 490489, 'fake_data': 249428}
97                 {'ID': 621211, 'fake_data': 40075}
98                {'ID': 945424, 'fake_data': 210315}
99                 {'ID': 135364, 'fake_data': 93235}

最新更新