为了账号安全,请及时绑定邮箱和手机立即绑定

根据其他数据框的列填充数据框列

根据其他数据框的列填充数据框列

梦里花落0921 2023-04-25 17:43:29
我有一个包含区域人口的数据框,我想用相同的分布填充其他数据框的一列。第一个数据框如下所示:Municipio   Population  Population50000   Lisboa  3184984 12911   Porto   2597191 10532   Braga   924351  3753   Setúbal 880765  3574   Aveiro  814456  3305   Faro    569714  2316   Leiria  560484  2277   Coimbra 541166  2198   Santarém    454947  1849   Viseu   378784  15410  Viana do Castelo    252952  10311  Vila Real   214490  8712  Castelo Branco  196989  8013  Évora   174490  7114  Guarda  167359  6815  Beja    158702  6416  Bragança    140385  5717  Portalegre  120585  4918  Total   12332794    5000基本上,第二个数据框有 5000 行,我想创建一个名称与第一个 df 中的 Municipios 相对应的列。我的问题是我不知道如何从第一个数据帧中填充具有相同出现分布的列。最终结果将是这样的:Municipio0 Porto1 Porto2 Lisboa3 Évora4 Lisboa5 Aveiro...4996 Viseu4997 Lisboa4998 Porto4999 Guarda5000 Beja有人能帮我吗?
查看完整描述

3 回答

?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

我会使用一个简单的理解来构建一个大小为 5000 的列表,其中包含与 的值一样多的城镇名称元素Population5000,如果您想要随机顺序,则可以选择将其洗牌:


lst = [m for m,n in df.loc[:len(df)-2,

                           ['Municipio', 'Population5000']].to_numpy()

       for i in range(n)]

random.shuffle(lst)

result = pd.Series(1, index=lst, name='Municipio')

用 初始化random.seed(0),它给出:


Setúbal     1

Santarém    1

Lisboa      1

Setúbal     1

Aveiro      1

           ..

Santarém    1

Porto       1

Lisboa      1

Faro        1

Aveiro      1

Name: Municipio, Length: 5000, dtype: int64


查看完整回答
反对 回复 2023-04-25
?
开心每一天1111

TA贡献1836条经验 获得超13个赞

如果这样做,您可以只做一个简单的地图;

map = dict(zip(DF1['Population5000'], DF1['Municipio']))
DF2['Municipo'] = DF2['Population5000'].map(map)

或者只是将地图 (DF2) 中的 population 5000 列名称更改为包含您的人口值的任何列。


查看完整回答
反对 回复 2023-04-25
?
POPMUISE

TA贡献1765条经验 获得超5个赞

map = dict(zip(municipios['Population5000'], municipios['Municipio']))

df['Municipio'] = municipios['Population5000'].map(map)

我按照 Amen_90 和第二个数据框中的 Municipio 列的建议进行了尝试,当我想拥有与第一个数据框中的“Population5000”列相同的 value_counts 时,它只填充了每个 Municipio 的一个实例。


df["Municipio"].value_counts()


Beja                1

Aveiro              1

Bragança            1

Vila Real           1

Porto               1

Santarém            1

Coimbra             1

Guarda              1

Leiria              1

Castelo Branco      1

Viseu               1

Total               1

Faro                1

Portalegre          1

Braga               1

Évora               1

Setúbal             1

Viana do Castelo    1

Lisboa              1

Name: Municipio, dtype: int64



查看完整回答
反对 回复 2023-04-25
  • 3 回答
  • 0 关注
  • 104 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信