【问题标题】:Create Two Dataframes From One By Adding Distinct Data in One Column通过在一列中添加不同的数据从一个创建两个数据框
【发布时间】:2018-12-31 05:57:53
【问题描述】:

我是 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)。我确信循环/迭代会解决这个问题,但我确实需要在一天结束时使用两个变量。任何帮助将不胜感激。

【问题讨论】:

  • 错误是df_0df_1df_2 是同一个数据框,因为您使用df_1 = df_0df_2 = df_0。只需添加copy() 例如df_1 = df_0.copy()df_2 = df_0.copy() 相同,它应该可以解决您遇到的问题

标签: python pandas loops dataframe iteration


【解决方案1】:

使用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

【讨论】:

    【解决方案2】:

    您可以将.copy() 与广播一起使用,df 是您现有的数据框:

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

    【讨论】:

      猜你喜欢
      • 2019-12-20
      • 1970-01-01
      • 2020-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-30
      • 1970-01-01
      相关资源
      最近更新 更多