我正在处理一个数据集,我有这个数据帧,它只是数据集的一部分:
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}