【问题标题】:Import and combine 2 csv and align with a common column id导入并合并 2 个 csv 并与一个公共列 id 对齐
【发布时间】:2020-01-10 01:00:17
【问题描述】:

我有 2 个数据集,其中一个具有不同的行数和列数,但有共同的 id。

问题:我希望将两个数据框组合成一个新的数据框,该数据框具有相同的 df1 行数,但添加了额外的 Age 列,age 列中的值根据 id 填充

例子:

data = [[1,'Alex',10],[2,'Bob',12],[3,'Clarke',13],[1,'Alex',13],[4,'Jim',13], [3,'Clarke',13]]
df1 = pd.DataFrame(data,columns=['id', 'Name','Score'],dtype=int)

data2 = [[1, 20],[2, 22],[3, 19],[4, 21]]
df2 = pd.DataFrame(data2,columns=['id','Age'],dtype=int)

输出:

不知道从哪里开始

python新手,请帮忙!

预期输出:

   id   Name    Score   Age
0   1   Alex    10      20    
1   2   Bob     12      22
2   3   Clarke  13      19
3   1   Alex    13      20
4   4   Jim     13      21
5   3   Clarke  13      19

【问题讨论】:

标签: python pandas csv jupyter-notebook


【解决方案1】:

试试这个:

>>> pd.merge(df1, df2, on="id")
   id    Name  Score  Age
0   1    Alex     10   20
1   1    Alex     13   20
2   2     Bob     12   22
3   3  Clarke     13   19
4   3  Clarke     13   19
5   4     Jim     13   21

【讨论】:

    【解决方案2】:

    尝试“合并”。

    您应该可以通过以下方式加入两个 csv:

    combined_data = df1.merge(df2, on="id")
    

    merge函数合并表格,“on”参数决定在什么条件下合并它们。

    【讨论】:

      【解决方案3】:

      如果两个相同长度的数据帧至少有一列相同,则可以使用合并函数合并它们。在你的情况下,它是 ID。所以我们像这样在“on”ID 上合并它:

      data = [[1,'Alex',10],[2,'Bob',12],[3,'Clarke',13],[1,'Alex',13],[4,'Jim',13], [3,'Clarke',13]]
      df1 = pd.DataFrame(data,columns=['id', 'Name','Score'],dtype=int)
      
      data2 = [[1, 20],[2, 22],[3, 19],[4, 21]]
      df2 = pd.DataFrame(data2,columns=['id','Age'],dtype=int)
      
      merged_df = df1.merge(df2, on="id")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-08-07
        • 2022-11-22
        • 2019-11-29
        • 1970-01-01
        • 2021-11-17
        • 2019-08-14
        • 2017-06-02
        • 2015-12-22
        相关资源
        最近更新 更多