如何将列插入到 python Pandas 中的嵌套对象中?

发布于 2025-01-10 03:06:00 字数 971 浏览 1 评论 0原文

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

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)

这不起作用。有没有什么简单的方法可以在 pandas 的嵌套数据中插入列?解决方法是创建另一个数据框 decision,在此处插入 ids,然后将 decision 插入到 decisions 中,如果我这样做就不好了您有一个深层嵌套的数据集。

I am working on a dataset and I have this data frame which is only a part of the dataset:

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)

I need to use the same ids for multiple locations. For this I created another data frame:

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

ids_data=make_id(100)

inside make_decisions, I tried:

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

This did not work. Is there any easy way that I can insert a column inside nested data in pandas? A workaround is to create another data frame decision, insert the ids here and then insert the decision into the decisions, which is not good if I you have a deep nested dataset.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

终止放荡 2025-01-17 03:06:00

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

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}

So, given the following toy dataframes:

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

You could try this (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}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文