【问题标题】:Pandas Dataframe: df adding a column from another df1 dataframePandas 数据框:df 从另一个 df1 数据框添加一列
【发布时间】:2020-07-24 16:26:59
【问题描述】:

需要帮助:我无法集中精力处理这个问题,我尝试了不同的 while & for 循环可能性,但都出错了。

基本上,我想根据对应的“inst_id”将一列从 df1 添加到 df

这是我的df

这是我的df1

如您所见,它们都有不同的索引长度,我不能直接将值从 df1 附加到 df。

所以我想基于 2 个数据框实现这样的目标:

new_df = ({'inst_id':100654,100654, ..., 494904},
      {'inst_name':'Alabama A&M University','Alabama A&M University', '...', 'Access Careers- 
       Islandia' })

import pandas as pd
pd.dataframe = new_df

TYIA!

【问题讨论】:

    标签: python pandas dataframe append add


    【解决方案1】:

    如果我的理解正确,你可以使用pd.merge

    new_df = df.merge(df1, on='inst_id')
    

    【讨论】:

    • 我知道我让自己复杂化了。哈哈!当然,作为一个新手,以前从来没有这样做过......这会立即奏效......我想我必须重新创建一个包含 15000 个索引的全新字典非常感谢!
    【解决方案2】:

    您可以使用 pd.merge 在这两个表之间执行内部联接

    pd.merge(df1, df2, how='inner', on='inst_id')
    

    例子

    >>> df1 = pd.DataFrame({"inst_id": [100654, 100654, 100654, 100663, 100663], "award_lvl":[5,7,9,2,5]})
    >>> df1
       inst_id  award_lvl
    0   100654          5
    1   100654          7
    2   100654          9
    3   100663          2
    4   100663          5
    >>>
    >>>
    >>> df2 = pd.DataFrame({"inst_id":[100654, 100663],"inst_name":["Alabama A & M", "Uni of Alabama at Bir"]})
    >>> df2
       inst_id              inst_name
    0   100654          Alabama A & M
    1   100663  Uni of Alabama at Bir
    >>>
    >>>
    >>> new_df = pd.merge(df1, df2, how='inner', on='inst_id')
    >>> new_df
       inst_id  award_lvl              inst_name
    0   100654          5          Alabama A & M
    1   100654          7          Alabama A & M
    2   100654          9          Alabama A & M
    3   100663          2  Uni of Alabama at Bir
    4   100663          5  Uni of Alabama at Bir
    

    【讨论】:

    • 是的 Manikanta,这也行得通,类似于 kait 的建议...欣赏两者!
    【解决方案3】:
    data1 = [['tom', 10], ['nick', 15], ['juli', 14]] 
    df1 = pd.DataFrame(data1, columns = ['Name', 'Age']) 
    data2 = [['tom', 'A'], ['nick', 'B'], ['juli', 'A'],['Mark', 'D']]
    df2 = pd.DataFrame(data2, columns = ['Name', 'Section'])  
    df3 = pd.merge(df2,df1,on='Name',how='outer')
    print(df3)
    

    你会得到它如下。 姓名科年龄 0 汤姆 A 10 1 个缺口 B 15 2 七里 A 14 3 马克 D NaN

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-28
      • 1970-01-01
      • 2019-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多