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

2024-06-03 17:20:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我对python还很陌生,正在为一个非常基本的概念而挣扎,所以请接受我。请接受我的道歉

目标: 我有一个现有的数据帧 我想获取现有的数据帧,并在此基础上创建两个独立的版本(变量“df\u1”和“df\u2”)。他们将是相同的,只是他们将有不同的国家/地区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\u Id\u 2)。我确信一个循环/迭代可以解决这个问题,但我确实需要在一天结束时使用两个变量。任何帮助都将不胜感激


Tags: 数据nameid概念df请参阅plumbercountry
2条回答

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

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

相关问题 更多 >