如何为熊猫数据帧的每一行分配值?

use*_*289 6 python apply dataframe pandas

我一直在尝试为数据框的每一行分配一个值,但我一直没有这样做(我是熊猫新手),所以如果有人可以提供帮助,我将非常感激!

我有两个数据框。在输入数据框中,我有以下品牌:

brand_raw.head()

brand_name
0   Nike
1   Lacoste
2   Adidas
Run Code Online (Sandbox Code Playgroud)

然后,在输出数据集上,我有一些对象:

object_raw.head()

category_id object_name
0   24  T-shirt
1   45  Shorts
2   32  Dress
Run Code Online (Sandbox Code Playgroud)

我需要的是一个包含所有对象和所有品牌的数据框:

to_raw.head()

category_id object_name brand_name
0   24  T-shirt     Nike
1   45  Shorts      Nike
2   32  Dress       Nike
3   24  T-shirt     Lacoste
4   45  Shorts      Lacoste
5   32  Dress       Lacoste
6   24  T-shirt     Adidas
7   45  Shorts      Adidas
8   32  Dress       Adidas

Run Code Online (Sandbox Code Playgroud)

我一直在尝试使用apply函数,对行进行迭代,但是最终覆盖了值,所以我写了最后一个品牌:

0   24  T-shirt     Nike
1   45  Shorts      Nike
2   32  Dress       Nike
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

def insert_value_in_every_row(input_df, output_df, column_name):
    for row in input_df.values:
        row = row[0].rstrip()

        output_df[column_name] = output_df[column_name].apply(lambda x: row) 
    return output_df


insert_value_in_every_row(brand_raw, to_raw, 'brand_name')
Run Code Online (Sandbox Code Playgroud)

有人可以给我提示如何处理吗?在此先多谢!

yat*_*atu 4

您正在寻找两个数据帧的笛卡尔积。在 pandas 中解决这个问题的一种方法是为两个数据帧创建一个公共且唯一的并执行merge(任何,因为存在完全重叠):

df.assign(key=0).merge(object_raw.assign(key=0), on='key').drop(['key'], axis=1)

   brand_name  category_id object_name
0       Nike           24     T-shirt
1       Nike           45      Shorts
2       Nike           32       Dress
3    Lacoste           24     T-shirt
4    Lacoste           45      Shorts
5    Lacoste           32       Dress
6     Adidas           24     T-shirt
7     Adidas           45      Shorts
8     Adidas           32       Dress
Run Code Online (Sandbox Code Playgroud)