【问题标题】:how to compare column values in 2 dataframe如何比较2个数据框中的列值
【发布时间】:2022-11-13 16:30:03
【问题描述】:

我需要比较两个数据帧 df1 和 df2。如果 df1 中的名称与 df2 中的名称相同,我需要将 mylist 合并到 df2 中。 这是 mylist 数据帧:
我的列表 :

      0       1
    [1,2]   [2,3]
    [1,5]   [2,6]
    [1,6]   [2,4]
    [1,1]   [2,5]
    [1,3]   [2,8]

mylist[0] = [[1,2],[2,3]]
mylist[1] = [[1,5],[2,6]]

这是数据框df1:

df1:
     name    0     1
0    a     [1,2]   [2,3]
1    y     [1,5]   [2,6]
2    c     [1,6]   [2,4]
3    x     [1,10]  [2,5]
4    e     [1,3]   [2,8]

这是数据框df2:

 df2:
   

  name    id     
0    a      abcd   
1    b      efgh
2    c      ijkl   
3    d      mnop   
4    e      qrs

If the **name** in df1 = the **name** in df2, I need to append **mylist** in df1 to df2  

预期产出 =

df3:
       name      id     0        1
    0    a      abcd   [1,2]   [2,3]
    1    b      efgh
    2    c      ijkl   [1,6]   [2,4]
    3    d      mnop   
    4    e      qrs    [1,3]   [2,8]

【问题讨论】:

  • 是否要将 df1 中的第 0 列和第 1 列添加到 df2?
  • 如果 df1 中的名称 = df2 中的名称,则不是整个列。即,df1中的name[0]是'a'等于df2中的name[0],也是'a',然后添加mylist[0]是[[1,2],[2,3] ] 到 df2
  • 不清楚。如果 name[5] 怎么办?请在问题中添加预期的输出。
  • 你能检查我的答案吗?

标签: python pandas dataframe numpy conditional-statements


【解决方案1】:

您可以使用合并:

final= df2.merge(df1,how='left', on='name')

【讨论】:

  • ValueError:您正在尝试合并 object 和 int64 列。如果你想继续,你应该使用 pd.concat
  • 在您给出的示例中,该列的类型为 int64 很奇怪,因为名称列由字母组成。您确定两个名称列都是字符串吗?
猜你喜欢
  • 2020-02-10
  • 2018-08-08
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多