通过在一列中添加不同的数据从一个创建两个数据帧

问题描述 投票:1回答:2

我是python的新手,并且正在努力解决一个非常基本的概念,所以请耐心等待。请接受我的道歉。

Objetive:我有一个现有的数据框我想采用现有的数据框,并根据它创建两个独立的版本(变量“df_1”和“df_2”)。它们将是相同的,除非它们具有不同的country_ids。

请参见数据帧1(“df_1”)的所需输出

     name   occupation  country_id
     mike   plumber     123
     mary   plumber     123
     joe    plumber     123

请参阅数据帧2的所需输出(“df_2”)

     name   occupation  country_id
     mike   plumber     456
     mary   plumber     456
     joe    plumber     456

我的守则

    country_id_1 = 123
    country_id_2 = 456

    df_0 = 
    name    occupation
    mike    plumber
    mary    plumber
    joe     plumber

    df_1 = df_0
    df_2 = df_0

    df_1['country_id'] = df_1.shape[0]*[country_id_1]
    df_2['country_id'] = df_2.shape[0]*[country_id_2]

当我打印我得到这个结果

   print(df_1['country_id'] = df_1.shape[0]*[country_id_1])
   print(df_2['country_id'] = df_2.shape[0]*[country_id_2])


   name occupation  country_id
   mike plumber 456
   mary plumber 456
   joe  plumber 456

   name occupation  country_id
   mike plumber 456
   mary plumber 456
   joe  plumber 456

它显然是指我使用的最后一个变量(country_Id_2)。我确信循环/迭代会解决这个问题,但我确实需要在一天结束时使用两个变量。任何帮助,将不胜感激。

python pandas loops dataframe iteration
2个回答
0
投票

使用assign创建一个新列,它将为您创建适当的副本:

country_id_1 = 123
country_id_2 = 456

df_1 = df_0.assign(country_id=country_id_1)

df_2 = df_0.assign(country_id=country_id_2)

>>> df_1
   name occupation  country_id
0  mike    plumber         123
1  mary    plumber         123
2   joe    plumber         123
>>> df_2
   name occupation  country_id
0  mike    plumber         456
1  mary    plumber         456
2   joe    plumber         456

0
投票

您可以将.copy()用于广播,df是您现有的数据帧:

df1 = df.copy()
df1['country_id'] = 123
df2 = df.copy()
df2['country_id'] = 456
© www.soinside.com 2019 - 2024. All rights reserved.