是否有熊猫通过特定的列值添加每行数据框

发布于 2025-01-21 22:31:53 字数 602 浏览 2 评论 0原文

我在这里有一个数据框架:

    name       role
0   Allen      Director
1   Kendrick   Food
2   Sean       Webmaster
3   Jacob      PR

我还有另一个数据框架:

    power
0   eat
1   sleep
2   code

是否有一种熊猫的方法可以向团队数据框中的每个成员添加power dataframe,以使其看起来像这样?

    name      role      power
0   Allen     Director  eat
1   Allen     Director  sleep
2   Allen     Director  code
3   Kendrick  Food      eat
4   Kendrick  Food      sleep
5   Kendrick  Food      code
...

我已经尝试通过迭代行迭代来做,但是我的数据框比上面提供的示例要大得多,我正在寻找一种熊猫的方法来执行此操作。

I have a dataframe here:

    name       role
0   Allen      Director
1   Kendrick   Food
2   Sean       Webmaster
3   Jacob      PR

I also have another dataframe:

    power
0   eat
1   sleep
2   code

Is there a pandas way to add the power dataframe to each member in the team dataframe to make it look like this?

    name      role      power
0   Allen     Director  eat
1   Allen     Director  sleep
2   Allen     Director  code
3   Kendrick  Food      eat
4   Kendrick  Food      sleep
5   Kendrick  Food      code
...

I've tried doing by iterating through the rows but my dataframe is a lot larger than the example I have provided above and I am looking for a pandas approach to do this.

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

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

发布评论

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

评论(1

忆梦 2025-01-28 22:31:54

一个选项是分配 df2.power to df1作为列表,然后爆炸 IT:

out = df1.assign(power=[df2['power'].tolist()]*len(df1)).explode('power').reset_index(drop=True)

如果您有pandas > = 1.2.0。,您可以交叉合并:

out = df1.merge(df2, how='cross')

输出:

        name       role  power
0      Allen   Director    eat
1      Allen   Director  sleep
2      Allen   Director   code
3   Kendrick       Food    eat
4   Kendrick       Food  sleep
5   Kendrick       Food   code
6       Sean  Webmaster    eat
7       Sean  Webmaster  sleep
8       Sean  Webmaster   code
9      Jacob         PR    eat
10     Jacob         PR  sleep
11     Jacob         PR   code

One option is to assign df2.power to df1 as a list, then explode it:

out = df1.assign(power=[df2['power'].tolist()]*len(df1)).explode('power').reset_index(drop=True)

If you have pandas >= 1.2.0., you can cross-merge:

out = df1.merge(df2, how='cross')

Output:

        name       role  power
0      Allen   Director    eat
1      Allen   Director  sleep
2      Allen   Director   code
3   Kendrick       Food    eat
4   Kendrick       Food  sleep
5   Kendrick       Food   code
6       Sean  Webmaster    eat
7       Sean  Webmaster  sleep
8       Sean  Webmaster   code
9      Jacob         PR    eat
10     Jacob         PR  sleep
11     Jacob         PR   code
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文