繁体   English   中英

是否有 pandas 方法通过特定列值为每一行添加 dataframe

[英]Is there a pandas way to add a dataframe for each row by a specific column value

我这里有一个 dataframe:

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

我还有一个 dataframe:

    power
0   eat
1   sleep
2   code

有没有一种 pandas 方法可以将 dataframe 的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
...

我尝试通过遍历行来完成,但我的 dataframe 比我上面提供的示例大很多,我正在寻找 pandas 方法来执行此操作。

一种选择是assign df2.power作为列表分配给df1 ,然后将其explode

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')

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM