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

时间:2018-07-23 17:49:33

标签: python pandas loops dataframe iteration

我是python的新手,正在为一个非常基本的概念而苦苦挣扎,所以请多多包涵。请接受我的道歉。

可吸入剂: 我有一个现有的数据框 我想采用现有的数据框并基于它创建两个单独的版本(变量“ df_1”和“ df_2”)。它们将是相同的,除了它们具有不同的country_id。

请参阅数据帧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)。我确定循环/迭代可以解决此问题,但我确实需要在一天结束时使用两个变量。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您可以将.copy()用作广播,并将df作为现有数据框:

df1 = df.copy()
df1['country_id'] = 123
df2 = df.copy()
df2['country_id'] = 456