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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过在一列中添加不同的数据从一个创建两个数据帧相关的知识,希望对你有一定的参考价值。

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

答案

使用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
另一答案

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

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

以上是关于通过在一列中添加不同的数据从一个创建两个数据帧的主要内容,如果未能解决你的问题,请参考以下文章

如何在R中的一列中添加具有不同值的新行

我如何 SQL Join 2 个数据库,在一列中只有不同的结果

有没有办法将数据帧的一列中的所有行与另一个数据帧的另一列(火花)中的所有行进行比较?

如果匹配,如何合并两个数据帧并从新列中的另一列返回数据?

Pandas 基于连接将列从一个数据帧添加到另一个数据帧

如何一次性检测和删除熊猫数据帧每一列的异常值? [复制]